欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

xhprof给你的PHP程序做个Profiler

程序员文章站 2022-05-30 19:00:56
...

xhprof是Fackbook开源的一个PHP代码“跟踪”程序,可以生成php程序的“函数”调用关系图,以及各个“函数”调用的次数及花费的时间。 当下,xhprof已经入住PHP的PECL库,可以能过pecl install xhprof安装(可能会提示你需要使用带版本号的名字,比如pecl ins

xhprof是Fackbook开源的一个PHP代码“跟踪”程序,可以生成php程序的“函数”调用关系图,以及各个“函数”调用的次数及花费的时间。

当下,xhprof已经入住PHP的PECL库,可以能过pecl install xhprof安装(可能会提示你需要使用带版本号的名字,比如pecl install xhprof-0.9.2)。

也可以下载源代码编译安装(其实与使得pecl安装效果是一样的)。

当使用php 5.4时,安装xhprof可能会遇到麻烦,详情见这个bug公告:https://bugs.php.net/bug.php?id=61674,为xhprof-0.9.2打上补丁即可编译通过:https://github.com/facebook/xhprof/commit/a6bae51236.diff

下面说xhprof怎么使用。

配置xhprof:
在原php的配置文件加入
[xhprof]
extension=xhprof.so
xhprof.output_dir=’/var/tmp’

/var/tmp目录需要apache运行账号可写。

安装绘图工具graphviz,这个是xhprof调用用来绘图的。

RHEL6上可以使用yum直接安装:yum install graphviz。或者自己编译安装。

为xhprof配置个专用的web访问路径:

比如在/etc/http/conf.d/下建一个xhprof.conf配置文件,内容如下:

Alias /xhprof/ /usr/share/pear/xhprof_html/

Options -indexes
Order allow,deny
Allow from all

使用xhprof:

// 放在程序开始第一行
xhprof_enable();

// 原程序开始

// 原程序结束

// 放在结尾
$xhprof_data = xhprof_disable();

$XHPROF_ROOT = ‘/usr/share/pear/’;
include_once $XHPROF_ROOT . “/xhprof_lib/utils/xhprof_lib.php”;
include_once $XHPROF_ROOT . “/xhprof_lib/utils/xhprof_runs.php”;

$xhprof_runs = new XHProfRuns_Default();

$run_id = $xhprof_runs->save_run($xhprof_data, “xhprof_foo”);

访问统计结果:

http://www.bsdmap.com/xhprof/index.php?run=$run_id&source=xhprof_foo

其中run_id到xhprof.output_dir设定的目录中查找。

给个例子:

http://www.bsdmap.com/xhprof/index.php?run=502e093694815&source=xhprof_foo

参考:
http://hi.baidu.com/thinkinginlamp/blog/item/f4bd08fa1a03ba9e59ee90fd.html
https://bugs.php.net/bug.php?id=61674