首頁  >  文章  >  後端開發  >  使用XHProf优化分析PHP程序性能

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

WBOY
WBOY原創
2016-06-20 13:04:201096瀏覽

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

XHProf 是 FaceBook 开发的一个函数级别的 PHP 分层分析器。

数据收集部分是一个基于 C 的 PHP 扩展,分析报告是一系列基于 PHP 的 HTML 导航页面。

XHProf 能统计每个函数的调用次数、内存使用、CPU占用等多项重要的数据。

并且 XHProf 还能比较两个统计样本,或从多个数据样本中汇总结果。

XHProf 是分析 PHP 程序执行效率的利器,能让我们得到更底层的的分析数据。

安装 XHProf

XHProf 目前的最新版本是 0.92,你可以从它的主页(http://pecl.php.net/package/xhprof)下载它的最新版本。

例如,我的 Web 目录是 /data/scutephp.com,那么我可以通过下面的命令来安装 XHProf 。
查看源代码

<span style="font-size: 14px;">wget http://pecl.php.net/get/xhprof-0.9.2.tgz</span><p>tar zxf xhprof-0.9.2.tgz<br />cd xhprof-0.9.2<br />cp -r xhprof_html xhprof_lib /data/scutephp.com/<br />cd extension<br />phpize<br />./configure<br />make<br />make install<span style="font-size: 14px;">

当然,我们还需要修改 php.ini 来确保 XHProf 的正常运行。

我们需要先建立一个目录用来存储分析数据文件,例如 /data/scutephp.com/xhprof/。
查看源代码

[xhprof]<br />extension=xhprof.so<br />xhprof.output_dir=/data/scutephp.com/xhprof/


使用 XHProf

使用 XHProf 非常简单,我们只需要修改少许代码即可实现。

例如,我们需要分析代码执行时关于 CPU 和内存的数据。
查看源代码
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);<br /> // Test Code Start<br />   …………<br />// Test Code End<br />   <br />$xhprofData = xhprof_disable();<br />    <br />include_once "/data/scutephp.com/xhprof_lib/utils/xhprof_lib.php";<br />include_once "/data/scutephp.com/xhprof_lib/utils/xhprof_runs.php";<br /> <br />$xhprofRuns = new XHProfRuns_Default();<br />$xhprofRuns->save_run($xhprofData, "xhprof");


这样,当我们运行程序之后,会在 /data/scutephp.com/xhprof/ 之中生成分析数据文件。

文件名类似于 4b4c239a86593.xhprof ,我们可以通过改变 save_run 的参数,来改变文件后缀。

由于分析可能会影响响应速度,通常我们会加上一个随机数,随机取样,而不是分析所有用户请求的执行过程。
查看源代码

 $randKey = mt_rand(1, 10000);<br /> <br />  if ($randKey == 1)<br />{<br />      xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);<br />}<br />  <br />  // Test Code Start<br />   …………<br />// Test Code End<br />  <br /> if ($randKey == 1)<br /> {<br />       $xhprofData = xhprof_disable();<br />   <br />       include_once "/data/scutephp.com/xhprof_lib/utils/xhprof_lib.php";<br />       include_once "/data/scutephp.com/xhprof_lib/utils/xhprof_runs.php";<br />   <br />        $xhprofRuns = new XHProfRuns_Default();<br />        $xhprofRuns->save_run($xhprofData, "xhprof");<br />}

查看 XHProf 分析数据

例如,我的域名是 scutephp.com,现在我们就可以通过 web 来查看详细的分析数据了。


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn