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


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 相关文章推荐
无限级别菜单的实现
Oct 09 PHP
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
使用NetBeans + Xdebug调试PHP程序的方法
Apr 12 PHP
php的array_multisort()使用方法介绍
May 16 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
Nov 04 PHP
ThinkPHP连接数据库的方式汇总
Dec 05 PHP
php与Mysql的一些简单的操作
Feb 26 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
Apr 15 PHP
值得分享的php+ajax实时聊天室
Jul 20 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
PHP获取中国时间(上海时区时间)及美国时间的方法
Feb 23 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 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
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
easyui的tabs update正确用法分享
2014/03/21 PHP
PHP内核探索之变量
2015/12/22 PHP
PHP验证码无法显示的原因及解决办法
2017/08/11 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
Javascript MD4
2006/12/20 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
BootStrap树状图显示功能
2016/11/24 Javascript
ionic中列表项增加和删除的实现方法
2017/01/22 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
自定义事件解决重复请求BUG的问题
2017/07/11 Javascript
js实现弹窗效果
2020/08/09 Javascript
Python socket C/S结构的聊天室应用实现
2014/11/30 Python
windows下python连接oracle数据库
2017/06/07 Python
Python编程argparse入门浅析
2018/02/07 Python
python 读取DICOM头文件的实例
2018/05/07 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
用python生成1000个txt文件的方法
2018/10/25 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
python OpenCV GrabCut使用实例解析
2019/11/11 Python
python实现图片插入文字
2019/11/26 Python
python怎么对数字进行过滤
2020/07/05 Python
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
委托书怎么写
2014/07/31 职场文书
农村党员对照检查材料
2014/09/24 职场文书
会计做账心得体会
2016/01/22 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS