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


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 相关文章推荐
windows下PHP APACHE MYSQ完整配置
Jan 02 PHP
php smarty模版引擎中的缓存应用
Dec 02 PHP
PHP-redis中文文档介绍
Feb 07 PHP
phpmyadmin显示utf8_general_ci中文乱码的问题终级篇
Apr 08 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
PHP使用SOAP调用.net的WebService数据
Nov 12 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
详解PHP文件的自动加载(autoloading)
Feb 04 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
AMFPHP php远程调用(RPC, Remote Procedure Call)工具 快速入门教程
2010/05/10 PHP
PHP学习之整理字符串
2011/04/17 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
Laravel中GraphQL接口请求频率实战记录
2020/09/01 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
详解javascript函数的参数
2015/11/10 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
基于jQuery实现选项卡效果
2017/01/04 Javascript
jQuery操作css样式
2017/05/15 jQuery
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
2017/09/13 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
vue前端框架—Mint UI详解(更适用于移动端)
2019/04/30 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
[37:45]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第二场 12.09
2020/12/11 DOTA
名片管理系统python版
2018/01/11 Python
TensorFlow如何实现反向传播
2018/02/06 Python
django 按时间范围查询数据库实例代码
2018/02/11 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
python如何获取列表中每个元素的下标位置
2019/07/01 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
英国DIY和家居装饰领域的主要品牌:Wickes
2019/11/26 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
大学生专科毕业生自我评价
2013/11/17 职场文书
研发工程师的岗位职责
2013/11/18 职场文书
英语故事演讲稿
2014/04/29 职场文书
计算机专业自荐信范文
2014/05/28 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
少年犯观后感
2015/06/11 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
springBoot基于webSocket实现扫码登录
2021/06/22 Java/Android
mysqldump进行数据备份详解
2022/07/15 MySQL