0
저는 유지 관리하는 응용 프로그램에서 몇 가지 광범위한 성능 조사를 수행하고 있으며 요청의 실행 시간을 추적 할 수있는 간단한 솔루션을 설정했지만 이것이 만족스럽게 정확할지를 확인하기위한 정보를 찾을 수 없습니다 .소멸자는 스크립트의 실행 종료를 표시하는 데 적합한 위치입니까?
이것은 좋은 정보를 얻은 것으로 보입니다. 결과적으로 일부 성능 문제가 이미 제거되었지만 기록 된 실행 시간의 정확성에 의문을 제기하는 혼란스러운 항목이 나타납니다.
각 호출 스크립트의 끝 부분에 명시 적 메소드 호출을 추가하여 실행 종료를 표시해야합니까, 아니면 충분히 좋은 소멸자를 사용하는 (다소 깔끔한) 접근 방식입니까?
요청 된 스크립트의 맨 위에있는 호출 코드 :
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);
}
}
에릭에 대한 조사에 감사드립니다. 그러나 필자는 프로파일 전략 제안 (다른 곳에서는 충분히 다루어 짐)을 요구하지 않았습니다. 내 질문은 PHP가 제공되는 요청과 관련하여 객체를 언로드하는 타이밍에 관한 것입니다. (기록을 위해 이미 Xdebug를 사용합니다.) –