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


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实现Socket服务器的代码
Apr 03 PHP
php中iconv函数使用方法
May 24 PHP
php执行sql语句的写法
Mar 10 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
php对称加密算法示例
May 07 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 PHP
学习PHP session的传递方式
Jun 15 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
PHP设计模式之原型模式定义与用法详解
Apr 03 PHP
Laravel Eloquent ORM 多条件查询的例子
Oct 10 PHP
laravel开发环境homestead搭建过程详解
Jul 03 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
php页面防重复提交方法总结
2013/11/25 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
PHP实现QQ登录的开原理和实现过程
2018/02/04 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
2009/12/03 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
为jQuery-easyui的tab组件添加右键菜单功能的简单实例
2016/10/10 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
JS实现select选中option触发事件操作示例
2018/07/13 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
pandas 选择某几列的方法
2018/07/03 Python
python实现飞机大战小游戏
2019/11/08 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
PyTorch实现AlexNet示例
2020/01/14 Python
Python django框架开发发布会签到系统(web开发)
2020/02/12 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
《金钱的魔力》教学反思
2014/02/24 职场文书
求职者怎样写自荐信
2014/04/13 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
乡镇群众路线教育实践活动整改措施
2014/10/04 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
Python 文字识别
2022/05/11 Python
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript
table不让td文字溢出操作方法
2022/12/24 HTML / CSS