全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点


Posted in PHP onJanuary 06, 2011
// 定义全局变量 记录时间 
$_timer_id = 0; 
// 函数设置全局变量 记录各个断点的运行所需时间 
function makeTimer( $notes, $onOff=FALSE ) 
{ 
if( $onOff ) 
{ 
global $_timer_id; 
$GLOBALS['timer'][$_timer_id][0] = microtime(TRUE); 
$GLOBALS['timer'][$_timer_id][1] = $notes; 
$_timer_id++; 
} 
} 
// 把全局运行时间情况输出 
function traceTimer() 
{ 
$timer_str = ''; 
$G_timer = count($GLOBALS['timer'])-1; 
if( $G_timer>0 ) 
{ 
for( $i=0;$i<$G_timer;$i++ ) 
{ 
$dif_time = number_format( ($GLOBALS['timer'][$i+1][0] - $GLOBALS['timer'][$i][0]), 3 ); 
$timer_str .= 'dif: '.$dif_time.' '.$GLOBALS['timer'][$i][1]."\n"; 
} 
$dif_time = number_format( (microtime(TRUE) - $GLOBALS['timer'][$G_timer][0]), 3 ); 
$timer_str .= 'dif: '.$dif_time.' '.$GLOBALS['timer'][$G_timer][1]."\n"; 
} 
return $timer_str; 
} 
使用方法: 
// 开始时间 
makeTimer( ' LINE:'.__LINE__ ); 
$imgstrpos = strpos($str, '<img'.$imgstr); 
makeTimer( ' LINE:'.__LINE__ ); 
$str_p = substr($str_noimg, 0, $imgstrpos); 
makeTimer( ' LINE:'.__LINE__ ); 
$str_n = substr($str_noimg, $imgstrpos, strlen($str_noimg)); 
makeTimer( ' LINE:'.__LINE__ ); 
$pst_exc_imgs = $str_p.'<img '.$imgstr.'>'.$str_n." "; 
makeTimer( ' LINE:'.__LINE__ ); 
// 记录到日志中 
error_log( traceTimer(), 3, '/tmp/'.basename(__FILE__).'.log' ); 
// 或者直接输出 
echo traceTimer();

at 2010-05-14 09:20
PHP 相关文章推荐
十天学会php(3)
Oct 09 PHP
php连接数据库代码应用分析
May 29 PHP
PHP原生模板引擎 最简单的模板引擎
Apr 25 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
php 不使用js实现页面跳转
Feb 11 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
十大使用PHP框架的理由
Sep 26 PHP
php时间计算相关问题小结
May 09 PHP
微信红包随机生成算法php版
Jul 21 PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 PHP
PHP实现时间比较和时间差计算的方法示例
Jul 24 PHP
实例讲解PHP表单处理
Feb 15 PHP
Discuz Uchome ajaxpost小技巧
Jan 04 #PHP
php INI配置文件的解析实现分析
Jan 04 #PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 #PHP
php simplexmlElement操作xml的命名空间实现代码
Jan 04 #PHP
array_multisort实现PHP多维数组排序示例讲解
Jan 04 #PHP
php关于array_multisort多维数组排序的使用说明
Jan 04 #PHP
PHP 设置MySQL连接字符集的方法
Jan 02 #PHP
You might like
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
Yii2 rbac权限控制操作步骤实例教程
2016/04/29 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
求得div 下 img的src地址的js代码
2007/02/28 Javascript
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
JavaScript通过select动态更换图片的方法
2015/03/23 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
JS实现单击输入框弹出选择框效果完整实例
2015/12/14 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
mint-ui的search组件在键盘显示搜索按钮的实现方法
2017/10/27 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
2018/02/13 jQuery
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
angularjs手动识别字符串中的换行符方法
2018/10/02 Javascript
JS 封装父页面子页面交互接口的实例代码
2019/06/25 Javascript
vue实现自定义H5视频播放器的方法步骤
2019/07/01 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
Python中Numpy包的安装与使用方法简明教程
2018/07/03 Python
pandas值替换方法
2018/07/10 Python
Selenium的使用详解
2018/10/19 Python
Python warning警告出现的原因及忽略方法
2020/01/31 Python
Python如何在循环内使用list.remove()
2020/06/01 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
爱岗敬业演讲稿
2014/05/05 职场文书