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


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正则校验用户名介绍
Jul 19 PHP
php array_intersect比array_diff快(附详细的使用说明)
Jul 03 PHP
php语言流程控制中的主动与被动
Nov 05 PHP
PHP 读取大文件的X行到Y行内容的实现代码
Jun 24 PHP
php自定义apk安装包实例
Oct 20 PHP
php获取根域名方法汇总
Oct 28 PHP
分享十款最出色的PHP安全开发库中文详细介绍
Mar 22 PHP
php 批量查询搜狗sogou代码分享
May 17 PHP
phpStudy 2016 使用教程详解(支持PHP7)
Oct 18 PHP
ThinkPHP5.1表单令牌Token失效问题的解决
Mar 22 PHP
PHP数组实际占用内存大小原理解析
Dec 11 PHP
PHP生成随机密码4种方法及性能对比
Dec 11 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中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
js字符编码函数区别分析
2008/06/05 Javascript
js简单实现用户注册信息的校验代码
2013/11/15 Javascript
调用HttpHanlder的几种返回方式小结
2013/12/20 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
Vue.js实例方法之生命周期详解
2017/07/03 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
今天 平安夜 Python 送你一顶圣诞帽 @微信官方
2017/12/25 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
python脚本实现验证码识别
2018/06/07 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
2020/11/18 Python
REISS英国官网:伦敦High Street最受欢迎品牌
2016/12/21 全球购物
COACH德国官方网站:纽约现代奢侈品牌,1941年
2018/06/09 全球购物
Europcar美国/加拿大:预订汽车或卡车租赁服务
2018/11/13 全球购物
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
介绍下java.util.Arrays类
2012/10/16 面试题
最新奶茶店创业计划书
2014/01/25 职场文书
土地转让协议书
2014/04/15 职场文书
爱心捐书活动总结
2014/07/05 职场文书
主要领导对照检查材料
2014/08/26 职场文书
房地产经营管理专业自荐信
2014/09/02 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
教师个人事迹材料
2014/12/17 职场文书
质量保证书格式模板
2015/02/27 职场文书
反邪教教育心得体会
2016/01/15 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python
零基础学java之循环语句的使用
2022/04/10 Java/Android