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


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分页显示制作详细讲解
Oct 09 PHP
如何写php程序?
Dec 08 PHP
php array_map array_multisort 高效处理多维数组排序
Jun 11 PHP
PHP 单引号与双引号的区别
Nov 24 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
深入理解PHP原理之异常机制
Aug 21 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
PHP编程函数安全篇
Jan 08 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
Mar 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
JS 创建对象(常见的几种方法)
2008/11/03 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
解析JavaScript中instanceof对于不同的构造器或许都返回true
2013/12/03 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
js canvas实现擦除效果示例代码
2017/04/26 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
mescroll.js上拉加载下拉刷新组件使用详解
2017/11/13 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
详解小程序输入框闪烁及重影BUG解决方案
2018/08/31 Javascript
node和vue实现商城用户地址模块
2018/12/05 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
Python使用matplotlib实现在坐标系中画一个矩形的方法
2015/05/20 Python
对numpy下的轴交换transpose和swapaxes的示例解读
2019/06/26 Python
python多线程共享变量的使用和效率方法
2019/07/16 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
Python脚本去除文件的只读性操作
2020/03/05 Python
Python 串口通信的实现
2020/09/29 Python
python 第三方库paramiko的常用方式
2021/02/20 Python
乡镇消防工作实施方案
2014/03/27 职场文书
合作协议书
2014/04/23 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书