개발 꿀팁/PHP

php Time 페이지 실행 시간 모니터링 클래스

Jammie 2022. 8. 9. 15:21
반응형

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
반응형