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


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中使用gettext来支持多语言的方法
May 02 PHP
PHP中3种生成XML文件方法的速度效率比较
Oct 06 PHP
2014过年倒计时示例
Jan 31 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
php中file_exists函数使用详解
May 08 PHP
php中header设置常见文件类型的content-type
Jun 23 PHP
php实现贪吃蛇小游戏
Jul 26 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
PHP获取数组中单列值的方法
Jun 10 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
Jun 17 PHP
PHP验证类的封装与使用方法详解
Jan 10 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
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
php使用ffmpeg获取视频信息并截图的实现方法
2016/05/03 PHP
php文件系统处理方法小结
2016/05/23 PHP
最新最全PHP生成制作验证码代码详解(推荐)
2016/06/12 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
基于jquery的二级联动菜单实现代码
2011/04/25 Javascript
html中使用javascript调用本地程序(exe、doc等)实现代码
2013/04/26 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
理解Angular数据双向绑定
2016/01/10 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
Bootstrap 粘页脚效果
2016/03/28 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
jQuery实现的别踩白块小游戏完整示例
2019/01/07 jQuery
微信小程序在ios下Echarts图表不能滑动的问题解决
2019/07/10 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
Sublime开发python程序的示例代码
2018/01/24 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
2018/07/10 Python
Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意事项
2018/11/30 Python
pycharm 批量修改变量名称的方法
2019/08/01 Python
Python基于Tensor FLow的图像处理操作详解
2020/01/15 Python
Python基础之字符串操作常用函数集合
2020/02/09 Python
CSS3实现翘边的阴影效果的代码示例
2016/06/13 HTML / CSS
wedgwood加拿大官网:1759年成立的英国国宝级陶瓷餐具品牌
2018/07/17 全球购物
剪彩仪式主持词
2014/03/19 职场文书
股份合作协议书
2014/04/12 职场文书
小学生作文评语大全
2014/04/21 职场文书
小学重阳节活动总结
2015/03/24 职场文书
实习单位推荐信
2015/03/27 职场文书
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android