xhprof 是一款非常不错的php性能分析工具,由facebook开发,有直观的图形分析,可以看到各个流程的性能损耗。下面是在Yii框架下安装xhprof
1,安装xhprof
如果安装了php,很简单执行:pecl install xhprof 就可以了
否则找个靠谱的源 sudo yum install xhprof 也可以
2,配置php.ini
1 view plaincopy [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
或者直接sudo yum install libpng* 简单
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
5 配置nginx
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还可以看到直观的性能分析图。