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


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 Memcached + APC + 文件缓存封装实现代码
Mar 11 PHP
PHP 根据IP地址控制访问的代码
Apr 22 PHP
PHP 文件系统详解
Sep 13 PHP
PHP中CURL方法curl_setopt()函数的参数分享
Jan 19 PHP
php中如何同时使用session和cookie来保存用户登录信息
Jul 05 PHP
根据中文裁减字符串函数的php代码
Dec 03 PHP
ThinkPHP单字母函数(快捷方法)使用总结
Jul 23 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
ThinkPHP路由详解
Jul 27 PHP
微信支付的开发流程详解
Sep 13 PHP
PHP单例模式详解及实例代码
Dec 21 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
Feb 18 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中的函数-- foreach()的用法详解
2013/06/24 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
Yii2 assets清除缓存的方法
2016/05/16 PHP
PHP网站自动化配置的实现方法(必看)
2017/05/27 PHP
JavaScript入门教程(2) JS基础知识
2009/01/31 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
js实现点击文本框显示日期选择器特效代码分享
2020/05/21 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
2016/04/29 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
node thread.sleep实现示例
2018/06/20 Javascript
vue-test-utils初使用详解
2019/05/23 Javascript
JavaScript中如何调用Java方法
2020/09/16 Javascript
[52:12]FNATIC vs Infamous 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
python实现矩阵乘法的方法
2015/06/28 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
使用Python3内置文档高效学习以及官方中文文档
2019/05/19 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
浅析Python 序列化与反序列化
2020/08/05 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
详解Python中第三方库Faker
2020/09/25 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
《雨点》教学反思
2014/02/12 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书