PHP如何实现记录代码运行时间封装类
短信预约 -IT技能 免费直播动态提醒
这篇文章给大家分享的是有关PHP如何实现记录代码运行时间封装类的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
示例代码
class TimeCost
{
private $cost = array();
private $record = array();
private $scale = 6;
public function __construct($scale = 6)
{
$this->cost = array();
$this->record = array();
$this->scale = $scale;
}
public function __toString()
{
return $this->getString();
}
public function addCost($key)
{
$this->cost[$key] = microtime(true);
}
public function closeCost($key)
{
$cost = bcsub(microtime(true), $this->cost[$key], $this->scale);
if (in_array($key, array_keys($this->record))) {
$this->record[$key] = bcadd($cost, $this->record[$key], $this->scale);
} else {
$this->record[$key] = $cost;
}
return $cost;
}
public function getString($key = null)
{
if ($key) {
return "{$key}[{$this->record[$key]}]";
}
$str = '';
foreach ($this->record as $k => $v) {
$str .= "{$k}[{$v}]";
}
return $str;
}
}
用法
$obj = new TimeCost();
$token = 'test_a';
$obj->addCost($token);
some_code();
$obj->closeCost($token);
$reslut = $obj->getString($token);
说明
1、时间精度: 默认是保留了6位, 已经足够了, 想要更高精度, 可以在new对象的时候指定$scale参数
2、token: token是为了表示某段代码, 对应的结果会以key(token), value的形式写入到record数组中。
所以用一个token多次进行addCost和closeClost的结果会进行累积。
3、getString: 传递token则返回token对应的结果, 默认会将record中的所有结果拼接返回。
感谢各位的阅读!关于“PHP如何实现记录代码运行时间封装类”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341