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


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和XSL stylesheets转换XML文档
Oct 09 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
PHP 观察者模式的实现代码
May 10 PHP
php输入流php://input使用示例(php发送图片流到服务器)
Dec 25 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
PHP基于数组实现的分页函数实例
Aug 20 PHP
ThinkPHP的MVC开发机制实例解析
Aug 23 PHP
PHP 错误处理机制
Jul 06 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
Mar 15 PHP
php中html_entity_decode实现HTML实体转义
Jun 13 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 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
牡丹941资料
2021/03/01 无线电
修改了一个很不错的php验证码(支持中文)
2007/02/14 PHP
PHP 反射机制实现动态代理的代码
2008/10/22 PHP
简化php模板页面中分页代码的解析
2009/02/06 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
javascript中的对象和数组的应用技巧
2007/01/07 Javascript
Javascript技术技巧大全(五)
2007/01/22 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
jQuery实现购物车数字加减效果
2015/03/14 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
jQuery中的Deferred和promise 的区别
2016/04/03 Javascript
30分钟快速掌握Bootstrap框架
2016/05/24 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
AngularJS ng-bind 指令简单实现
2016/07/30 Javascript
JS简单测试循环运行时间的方法
2016/09/04 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
Vue实现点击按钮复制文本内容的例子
2019/11/09 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
vue项目接口域名动态获取操作
2020/08/13 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
2020/02/13 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5中语义化 b 和 i 标签
2008/10/17 HTML / CSS
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
教师实习的自我鉴定
2013/10/26 职场文书
营销与策划专业毕业生求职信
2013/11/01 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
简历自荐信范文
2015/03/09 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle