Centos中安装xdebug和使用kcachegrind分析PHP性能
浏览数 186832
赞
(0)
一、安装PHP扩展xdebug
- 下载xdebug安装包
到xdebug网站上找到最新的安装包,我使用的是Xdebug2.5.5版本
https://xdebug.org/download.php - 右击“source”按钮,复制链接地址
https://xdebug.org/files/xdebug-2.5.5.tgz - 在Centos系统中进入你的程序安装包存放目录
cd /software - 下载安装包
wget https://xdebug.org/files/xdebug-2.5.5.tgz - 解压安装包
tar -zxvf xdebug-2.5.5.tgz - 进入解压出来的目录
cd xdebug-2.5.5 - 安装
/usr/local/php/bin/phpize
./configure --enable-xdebug --with-php-config=/usr/local/php/bin/php-config
make && make install
成功编译安装后,Xdebug会显示编译完成的.so文件目录,我们要记录下这个目录及xdebug.so的文件路径:
/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so - 在php.ini中加入配置
vi /usr/local/php/etc/php.ini
加入以下配置代码:
[xdebug]
zend_extension = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20131226/xdebug.so"
xdebug.auto_trace = on
xdebug.auto_profile = on
xdebug.collect_params = on
xdebug.collect_return = on
xdebug.profiler_enable = on
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9000
xdebug.scream = 0
xdebug.cli_color = 1
xdebug.show_local_vars = 1
xdebug.trace_output_dir = "/logs/xdebug"
xdebug.profiler_output_dir = "/logs/xdebug"
xdebug.profiler_output_name = "callgrind.out.%p"
xdebug.dump.GET = *
xdebug.dump.POST = *
xdebug.dump.COOKIE = *
xdebug.dump.SESSION = *
xdebug.var_display_max_data = 4056
xdebug.var_display_max_depth = 5 - 创建存放调试文件的目录
cd /
mkdir logs
cd logs
mkdir xdebug
chmod 777 xdebug - 重启php-fpm,xdebug就可以使用了
可以在php文件中输出phpinfo();查看到xdebug的模块
接下来运行PHP页面就会在/logs/xdebug中输出调试的日志文件
二、使用kcachegrind分析PHP性能
有了上面输出的日志文件,我们需要借助一些工具在分析PHP的性能,比如:kcachegrind、WinCacheGrind.exe,这里简单说一下kcachegrind的使用和提供kcachegrind的文件下载
下载kcachegrind地址:
http://www.weinidai.com/sources/kcachegrind.zip
下载WinCacheGrind.exe地址:
http://www.weinidai.com/sources/WinCacheGrind.rar
下载解压kcachegrind后,找到kcachegrind.exe,运行它就打开主界面了。
把PHP生成的日志文件下载到windows系统
cd /logs/xdebug
打包所有文件
zip -r xdebug_log.zip ./*
下载
sz xdebug_log.zip
完成后可以在windows的默认“下载”目录中找到xdebug_log.zip,把它复制解压到你想入的文件夹中。
回到kcachegrind界面,菜单 File - Open 打开日志文件进行分析,分析方法在这里不说了,有很长的篇幅。
在找开日志文件的窗口我们可以看到,kcachegrind只支持callgrind.*格式的文件,所在在php.ini中配置文件名时一定要按照这个格式书写。