xhprof 是一款非常不错的php性能分析工具,由facebook开发,有直观的图形分析,可以看到各个流程的性能损耗。下面是在Yii框架下安装xhprof
1,安装xhprof
如果安装了php,很简单执行:pecl install xhprof 就可以了
否则找个靠谱的源 sudo yum install xhprof 也可以
2,配置php.ini
[xhprof]
extension=xhprof.so
xhprof.output_dir=/home/work/tmp/xhprof
其中oupput_idr 是输出文件的目录
3,安装libpng
- wget http://nchc.dl.sourceforge.net/project/libpng/libpng15/1.5.1/libpng-1.5.1.tar.gz
- tar zxf libpng-1.5.1.tar.gz
- cd libpng-1.5.1
- ./configure
- make
- make install
4 安装Graphviz
- wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
- tar zxf graphviz-2.24.0.tar.gz
- cd graphviz-2.24.0
- ./configure --with-png=yes
- make
- make install
server {
listen 8088;
root /home/work/local/php-5.5.18/lib/php/xhprof_html;
location @php {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME "$document_root/index.php";
fastcgi_pass php;
}
location ~ /robots\.(txt|php) {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME "$document_root/robots.php";
fastcgi_pass php;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
fastcgi_index index.php;
}
location / {
try_files $uri @php;
}
}
重启nginx , nginx -s reload
重启php-fpm , pkill -USR2 php-fpm, php-fpm
6 配置Yii框架下使用xhprof
找到protected目录下的yii.php
加入以下代码
public static function createApplication($class,$config=null) {
<span style="white-space:pre"> </span>$app->attachEventHandler("onBeginRequest", function() {
xhprof_enable(XHPROF_FLAGS_NO_BUILTINS);
});
$app->attachEventHandler("onEndRequest", function() use ($app) {
$data = xhprof_disable(); //返回运行数据
include_once "xhprof_lib/utils/xhprof_runs.php";
$objXhprofRun = new XHProfRuns_Default();
$run_id = $objXhprofRun->save_run($data, $app->name);
});
}
7 结束
打开你的任意网页,会在/home/work/tmp/xhprof目录下产生性能分析文件,之后通过localhost:8088/index.php就可以访问文件了,点击view_all_callgraph还可以看到直观的性能分析图。