用xhprof替代xdebug


以前一直在用xdebug作php的性能分析,但这东西太耗性能,只能在开发机上跑跑。前几天在网上看到xhprof这东西,是facebook开源的,别人都用上一年了,我才知道,唉,落伍了,废话少说,亡羊补牢,还未晚。
一、安装xhprof

  1. wget http://pecl.php.net/get/xhprof-0.9.2.tgz
  2. tar zxvf xhprof-0.9.2.tgz
  3. cd xhprof-0.9.2
  4. cp -r xhprof_html xhprof_lib <directory_for_htdocs> # 应用程序所在目录
  5. cd extension
  6. /usr/local/php/bin/phpize
  7. ./configure  --with-php-config=/usr/local/php/bin/php-config
  8. make
  9. make install


二、配置php.ini
在php.ini最后加上

  1. extension=xhprof.so
  2. ; 存放目录
  3. xhprof.output_dir=<directory_for_storing_xhprof_runs>

重启php让它生效,到这一步就已经可以使用了,不过我们要继续安装一个东西,可以让xhprof生成超酷的图表。
三、安装Graphviz

  1. wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
  2. tar zxvf graphviz-2.24.0.tar.gz
  3. cd graphviz-2.24.0
  4. ./configure
  5. make
  6. make install

把生成的/usr/local/bin/dot加入PATH中,用vim打开/etc/profile,在最后加入

  1. PATH="$PATH:/usr/local/bin/dot"
  2. export PATH

四、使用
在代码页的头部加上

  1. $xhprof_flag = mt_rand(1, 10000);
  2. if ($xhprof_flag === 1) {
  3.     xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
  4. }

在代码页的底部加上

  1. if ($xhprof_flag) {
  2.     $xhprof_data = xhprof_disable();
  3.     include_once "./xhprof_lib/utils/xhprof_lib.php";
  4.     include_once "./xhprof_lib/utils/xhprof_runs.php";
  5.     $xhprof_runs = new XHProfRuns_Default();
  6.     $xhprof_runs->save_run($xhprof_data, 'xhprof');
  7. }

这样在输出目录就会出现很多类似4bcc4a827a173.xhprof这样的文件,通过/xhprof_html/index.php?run=4bcc4a827a173就能看到了,想看图,点击“[View Full Callgraph]“,哪里是瓶颈一目了然。
附上效果图一张。
xhprof

,

  1. No comments yet.
(will not be published)