php性能优化分析工具XDebug 大型网站调试工具


Posted in PHP onMay 22, 2011

一、安装配置

1、下载PHP的XDebug扩展,网址:http://xdebug.org/

2、在Linux下编译安装XDebug

引用
tar -xzf xdebug-2.0.0RC3.gz
cd xdebug-2.0.0RC3
/usr/local/php/bin/phpize
./configure --enable-xdebug
cp modules/xdebug.so /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/

注:/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/不同的PHP版本路径不同,也不一定要放在该路径,可以在zend_extension_ts中自行指定xdebug.so所在位置。

引用
vi /usr/local/php/lib/php.ini

修改php.ini,去除PHP加速模块,增加以下配置信息支持XDebug扩展

[Xdebug] 
zend_extension_ts="/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429/xdebug.so" 
xdebug.profiler_enable=on 
xdebug.trace_output_dir="/tmp/xdebug" 
xdebug.profiler_output_dir="/tmp/xdebug" 
xdebug.profiler_output_name="script"

引用
mkdir -p /tmp/xdebug
chmod 755 /tmp/xdebug
chown www:www /tmp/xdebug
/usr/local/apache/bin/apachectl -k restart

3、客户端(Windows):WinCacheGrind

下载地址:http://sourceforge.net/projects/wincachegrind/

二、分析过程

1、访问你的网站,将首页上各种链接点击几遍,XDebug在/tmp/xdebug目录生成以下文件:

usr_local_apache_htdocs_app_checknum_chknum_php_cachegrind.out

usr_local_apache_htdocs_app_login_showHeaderLogin_php_cachegrind.out

usr_local_apache_htdocs_app_play_play_php_cachegrind.out

usr_local_apache_htdocs_app_user_member_php_cachegrind.out

usr_local_apache_htdocs_tag_tags_php_cachegrind.out

usr_local_apache_htdocs_top_top_php_cachegrind.out

2、将以上文件拷贝到Windows上,用客户端软件WinCacheGrind打开每个文件,发现以下PHP程序执行所耗费的时间最长:

/usr/local/apache/htdocs/tag/tags.php

耗时840ms

三、分析结果:

1、/usr/local/apache/htdocs/tag/tags.php

php性能优化分析工具XDebug 大型网站调试工具

(1)耗时最长的filter_tags函数出现在/usr/local/apache/htdocs/tag/tags.php的第158行:

$tags .= filter_tags($videos[$i]['tags'])." ";

   (2)filter_tags函数引自/usr/local/apache/htdocs/include /misc.php,getForbiddenTags函数被filter_tags函数调用了21次,filter_tags函数耗费的时间中绝大多数 因getForbiddenTags函数所致。getForbiddenTags函数的内容如下:

function getForbiddenTags() 
{ $tagsPath=TEMPLATE_FILE_PATH."tags/forbidden_tags.txt"; 
if(file_exists($tagsPath)) 
{ 
$fp = fopen($tagsPath, "r"); 
$arrconf = array (); 
if ($fp) 
{ 
while (!feof($fp)) 
{ 
$line = fgets($fp, 1024); 
$line = trim($line); 
$rows = explode("#", $line); 
$coumns = explode("=", trim($rows[0])); 
if(""!=trim($coumns[0])) 
{ 
$arrconf[trim($coumns[0])] = trim($coumns[1]); 
} 
} 
} 
return $arrconf; 
} 
}

(4)对getForbiddenTags函数进行分析,其中的PHP函数trim被调用了16827次。

php性能优化分析工具XDebug 大型网站调试工具

(5)可能造成瓶颈的原因:

要过滤的156个关键字逐行存放在/usr/local/apache/template/tags/forbidden_tags.txt文件中,文本数据库的效率不高。

逐行读取函数fgets、以及去除字符串两边的空白或者指定的字符的函数trim在高负载下的效率低,可以测试fopen、fread、fscanf之类的文件读取函数,对比一下。

PHP 相关文章推荐
php将数据库中所有内容生成静态html文档的代码
Apr 12 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
php cli 小技巧
Jun 03 PHP
php的sprintf函数的用法 控制浮点数格式
Feb 14 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
php实现面包屑导航例子分享
Dec 19 PHP
PHP共享内存用法实例分析
Feb 12 PHP
基于PHP实现通过照片获取ip地址
Apr 26 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
详解使用php调用微信接口上传永久素材
Apr 11 PHP
php中字符串和整数比较的操作方法
Jun 06 PHP
PHP session垃圾回收机制实例分析
Jun 28 PHP
Look And Say 序列php实现代码
May 22 #PHP
php利用cookie实现访问次数统计代码
May 19 #PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 #PHP
php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE  eval()'d code error
May 19 #PHP
php中全局变量global的使用演示代码
May 18 #PHP
一个PHP分页类的代码
May 18 #PHP
PHP sprintf()函数用例解析
May 18 #PHP
You might like
fleaphp crud操作之find函数的使用方法
2011/04/23 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
php 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
js实现百度搜索提示框
2017/02/05 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
Vue.js组件间的循环引用方法示例
2017/12/27 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
django批量导入xml数据
2016/10/16 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
python虚拟环境完美部署教程
2019/08/06 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
万豪国际住宅与别墅集团:Homes & Villas by Marriott International
2020/10/08 全球购物
便利店投资的创业计划书
2014/01/12 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
秋游活动策划方案
2014/02/16 职场文书
企业业务员岗位职责
2014/03/14 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
出租车拒载检讨书
2015/01/28 职场文书
煤矿安全保证书
2015/02/27 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
边城读书笔记
2015/06/29 职场文书
上级领导检查欢迎词
2015/09/30 职场文书
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫
python lambda 表达式形式分析
2022/04/03 Python
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers