以前一直在用xdebug作php的性能分析,但这东西太耗性能,只能在开发机上跑跑。前几天在网上看到xhprof这东西,是facebook开源的,别人都用上一年了,我才知道,唉,落伍了,废话少说,亡羊补牢,还未晚。
一、安装xhprof
- wget http://pecl.php.net/get/xhprof-0.9.2.tgz
- tar zxvf xhprof-0.9.2.tgz
- cd xhprof-0.9.2
- cp -r xhprof_html xhprof_lib <directory_for_htdocs> # 应用程序所在目录
- cd extension
- /usr/local/php/bin/phpize
- ./configure --with-php-config=/usr/local/php/bin/php-config
- make
- make install
二、配置php.ini
在php.ini最后加上
- extension=xhprof.so
- ; 存放目录
- xhprof.output_dir=<directory_for_storing_xhprof_runs>
重启php让它生效,到这一步就已经可以使用了,不过我们要继续安装一个东西,可以让xhprof生成超酷的图表。
三、安装Graphviz
- wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
- tar zxvf graphviz-2.24.0.tar.gz
- cd graphviz-2.24.0
- ./configure
- make
- make install
把生成的/usr/local/bin/dot加入PATH中,用vim打开/etc/profile,在最后加入
- PATH="$PATH:/usr/local/bin/dot"
- export PATH
四、使用
在代码页的头部加上
- $xhprof_flag = mt_rand(1, 10000);
- if ($xhprof_flag === 1) {
- xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
- }
在代码页的底部加上
- if ($xhprof_flag) {
- $xhprof_data = xhprof_disable();
- include_once "./xhprof_lib/utils/xhprof_lib.php";
- include_once "./xhprof_lib/utils/xhprof_runs.php";
- $xhprof_runs = new XHProfRuns_Default();
- $xhprof_runs->save_run($xhprof_data, 'xhprof');
- }
这样在输出目录就会出现很多类似4bcc4a827a173.xhprof这样的文件,通过/xhprof_html/index.php?run=4bcc4a827a173就能看到了,想看图,点击“[View Full Callgraph]“,哪里是瓶颈一目了然。
附上效果图一张。

近期评论