|
PHP复制代码
<?php if ( ! defined('BASEPATH')) exit('不允许直接访问');
/*
范例:
$BM = new Benchmark();
$BM->mark('FIRST_MARK');
$BM->mark('SECOND_MARK');
echo $BM->elapsed('FIRST_MARK', 'SECOND_MARK');
*/
class Benchmark {
var $marker = array();
//设定一个时间标记
function mark ($name)
{
$this->marker[$name] = microtime();
}
//计算时间
function elapsed_time ($point1 = '', $point2 = '', $decimals = 4)
{
//如果第一个参数为空函数将返回伪变量 {elapsed_time}。这将在模板中显示系统[指某个http请求]运行的总时长。
if ($point1 == '')
{
return '{elapsed_time}';
}
//如果第一个标记为空,返回空值
if ( ! isset($this->marker[$point1]))
{
return '';
}
//如果第二个标记为空,返回当前时间
if ( ! isset($this->marker[$point2]))
{
$this->marker[$point2] = microtime();
}
//计算时间差,这个技巧可以记住,以后自己计算时间差也可以用到
list($sm, $ss) = explode(' ', $this->marker[$point1]);
list($em, $es) = explode(' ', $this->marker[$point2]);
return number_format(($em + $es) - ($sm + $ss), $decimals);
}
}
?>
复制代码 |
|