您好,欢迎访问一九零五行业门户网

使用XHProf优化分析PHP程序性能

使用xhprof优化分析php程序性能
xhprof 是 facebook 开发的一个函数级别的 php 分层分析器。
数据收集部分是一个基于 c 的 php 扩展,分析报告是一系列基于 php 的 html 导航页面。
xhprof 能统计每个函数的调用次数、内存使用、cpu占用等多项重要的数据。
并且 xhprof 还能比较两个统计样本,或从多个数据样本中汇总结果。
xhprof 是分析 php 程序执行效率的利器,能让我们得到更底层的的分析数据。
安装 xhprofxhprof 目前的最新版本是 0.92,你可以从它的主页(http://pecl.php.net/package/xhprof)下载它的最新版本。
例如,我的 web 目录是 /data/scutephp.com,那么我可以通过下面的命令来安装 xhprof 。
查看源代码
wget http://pecl.php.net/get/xhprof-0.9.2.tgztar zxf xhprof-0.9.2.tgz
cd xhprof-0.9.2
cp -r xhprof_html xhprof_lib /data/scutephp.com/
cd extension
phpize
./configure
make
make install
当然,我们还需要修改 php.ini 来确保 xhprof 的正常运行。
我们需要先建立一个目录用来存储分析数据文件,例如 /data/scutephp.com/xhprof/。
查看源代码
[xhprof]
extension=xhprof.so
xhprof.output_dir=/data/scutephp.com/xhprof/
使用 xhprof
使用 xhprof 非常简单,我们只需要修改少许代码即可实现。
例如,我们需要分析代码执行时关于 cpu 和内存的数据。
查看源代码
xhprof_enable(xhprof_flags_cpu + xhprof_flags_memory);
// test code start
…………
// test code end
$xhprofdata = xhprof_disable();
include_once /data/scutephp.com/xhprof_lib/utils/xhprof_lib.php;
include_once /data/scutephp.com/xhprof_lib/utils/xhprof_runs.php;
$xhprofruns = new xhprofruns_default();
$xhprofruns->save_run($xhprofdata, xhprof);
这样,当我们运行程序之后,会在 /data/scutephp.com/xhprof/ 之中生成分析数据文件。
文件名类似于 4b4c239a86593.xhprof ,我们可以通过改变 save_run 的参数,来改变文件后缀。
由于分析可能会影响响应速度,通常我们会加上一个随机数,随机取样,而不是分析所有用户请求的执行过程。
查看源代码
$randkey = mt_rand(1, 10000);
if ($randkey == 1)
{
xhprof_enable(xhprof_flags_cpu + xhprof_flags_memory);
}
// test code start
…………
// test code end
if ($randkey == 1)
{
$xhprofdata = xhprof_disable();
include_once /data/scutephp.com/xhprof_lib/utils/xhprof_lib.php;
include_once /data/scutephp.com/xhprof_lib/utils/xhprof_runs.php;
$xhprofruns = new xhprofruns_default();
$xhprofruns->save_run($xhprofdata, xhprof);
}
查看 xhprof 分析数据
例如,我的域名是 scutephp.com,现在我们就可以通过 web 来查看详细的分析数据了。
其它类似信息

推荐信息