Ben korumak bir uygulama bazı geniş performans soruşturma yapıyorum ve istekleri yürütme zamanı takip etmek için basit bir çözüm kurdum, ama bu satisfyingly doğru olacak olup olmadığını doğrulamak için bilgi bulmak mümkün değilim.
Bu, bazı iyi bilgi düşülmektedir görünüyor ve ben zaten bir sonucu olarak, bazı performans sorunlarını ortadan ettik, ama ben de bana kaydedilen yürütme zamanı doğruluğunu sorgulamaya yapmak bazı kafa karıştırıcı girişleri görüyorum.
Ben onun yürütme sonunu işaretlemek için her çağrı yazısının sonunda, açık bir yöntem çağrısı eklemek veya bu yeterince iyi yıkıcı kullanarak (yerine derli toplu) bir yaklaşım mıdır?
Talep yazısının üstündeki çağrı kodu:
if( file_exists('../../../bench') )
{
require('../../../includes/classes/Bench.php');
$Bench = new Bench;
}
Ve burada (netlik için azaltılmış) sınıfı tanımı:
require_once('Class.php');
class Bench extends Class
{
protected $page_log = 'bench-pages.log';
protected $page_time_end;
protected $page_time_start;
public function __construct()
{
$this->set_page_time_start();
}
public function __destruct()
{
$this->set_page_time_end();
$this->add_page_record();
}
public function add_page_record()
{
$line = $this->page_time_end - $this->page_time_start.','.
base64_encode(serialize($_SERVER)).','.
base64_encode(serialize($_GET)).','.
base64_encode(serialize($_POST)).','.
base64_encode(serialize($_SESSION))."\n";
$fh = fopen( APP_ROOT . '/' . $this->page_log, 'a' );
fwrite( $fh, $line );
}
public function set_page_time_end()
{
$this->page_time_end = microtime(true);
}
public function set_page_time_start()
{
$this->page_time_start = microtime(true);
}
}