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
或者直接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还可以看到直观的性能分析图。