반응형
php Timer 페이지 런타임 모니터링 클래스, 키별로 런타임 모니터링 가능
Timer.class.php
<?php
/** Timer class, 페이지 실행 시간 계산, 키별 실행 시간 계산
* Date: 2014-02-28
* Author: fdipzone
* Ver: 1.0
*
* Func:
* public start 기록 시작 시간
* public end 기록 종료 시간
* public getTime 런타임 계산
* pulbic printTime 출력 실행 시간
* private getKey 키 가져오기
* private getMicrotime microtime 가져오기
*/
class Timer{ // class start
private $_start = array();
private $_end = array();
private $_default_key = 'Timer';
private $_prefix = 'Timer_';
/** 기록 시작 시간
* @param String $key 표식
*/
public function start($key=''){
$flag = $this->getKey($key);
$this->_start[$flag] = $this->getMicrotime();
}
/** 기록 종료 시간
* @param String $key 표식
*/
public function end($key=''){
$flag = $this->getKey($key);
$this->_end[$flag] = $this->getMicrotime();
}
/** 런타임 계산
* @param String $key 표식
* @return float
*/
public function getTime($key=''){
$flag = $this->getKey($key);
if(isset($this->_end[$flag]) && isset($this->_start[$flag])){
return (float)($this->_end[$flag] - $this->_start[$flag]);
}else{
return 0;
}
}
/** 출력 페이지 실행 시간
* @param String $key 표식
* @return String
*/
public function printTime($key=''){
printf("%srun time %f ms\r\n", $key==''? $key : $key.' ', $this->getTime($key)*1000);
}
/** 키 가져오기
* @param String $key 표식
* @return String
*/
private function getKey($key=''){
if($key==''){
return $this->_default_key;
}else{
return $this->_prefix.$key;
}
}
/** microtime 가져오기
*/
private function getMicrotime(){
list($usec, $sec) = explode(' ', microtime());
return (float)$usec + (float)$sec;
}
} // class end
?>
demo:
<?php
require 'Timer.class.php';
$timer = new Timer();
$timer->start();
$timer->start('program1');
usleep(mt_rand(100000,500000));
$timer->end('program1');
$timer->printTime('program1');
$timer->start('program2');
usleep(mt_rand(100000,500000));
$timer->end('program2');
$timer->printTime('program2');
$timer->end();
$timer->printTime();
?>
demo 실행 출력:
program1 run time 163.285971 ms
program2 run time 100.347042 ms
run time 264.035940 ms
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php 양방향 큐 클래스 (0) | 2022.08.10 |
---|---|
php CSV 추상화 내보내기 (0) | 2022.08.10 |
php 사용자 접근 페이지 언어 클래스 가져오기/ 설정 (0) | 2022.08.09 |
Laravel의 Json Response에 의한 PHP 기반 인식 (0) | 2022.08.09 |
PHP로 명령줄에서 그림 보기 (0) | 2022.08.09 |