<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } A:link { so-language: zxx } -->
由于项目的需求,开始在寻找一些 PHP 性能优化之类的工具,在 google 上面搜到 Xhprof 。官方介绍是由 facebook 开源出来的,具体的介绍,可以到 google 搜,或看这个地址: 1. http://mirror.facebook.net/facebook/xhprof/doc.html 网友翻译的介绍 2. http://www.neatstudio.com/show-1363-1.shtml
好了,说了那么多闲话,开始正题。
在安装之前先准备好需要的安装包。可以到网上找找。 0.9.2 应该是目前最新的版本。下面是下载地址。
down path: http://pecl.php.net/get/xhprof-0.9.2.tgz
下面是在 Linux 上的操作命令:
1. wget http://pecl.php.net/get/xhprof-0.9.2.tgz // 下载安装包
2. cd /tmp // 切换目录
3. tar zxvf xhprof-0.9.2.taz // 解压文件
4. mv xhprof-0.9.2 xhprof // 更改文件名
5. cp -r xhprof_html xhprof_lib /var/www/html/ // 拷贝文件,不明白作用,看 notes 2
6. cd extension // 切换目录
7. ./phpize
8. ./configure –with-php-config=/etc/php-config // 配置 PHP 配置文件目录
9. make // 编译
10. make install // 编译安装
编辑 PHP 配置文件
11. vi /etc/php.ini
[xhprof]
extension=xhprof.so ;
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
;
;xhprof.output_dir=<directory_for_storing_xhprof_runs> xhprof.output_dir=/var/logs/xhprof
重启 web 服务器,让修改生效(一般使用 apache, 重启命令: service httpd restart )
如果想要 xhprof 显示的效果更好一点或更清晰一点,需要安装 Graphviz
1. wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.26.3.tar.gz // 下载安装包
2. tar zxvf graphviz-2.26.3.tar.gz // 解压文件
3. cd graphviz-2.26.3 // 切换目录
4. ./configure
5. make // 编译
6. make install //编译安装
Notes:
1. 这里注意自己下载的目录,我下载是在 /tmphhbi 目录下面。
2. 这个当时装的时候一直没明白是什么意思,查了半天才知道,拷贝到网站的同级目录即可,一般做法就是拷贝到 Apache 的根目录即可。 Xhprof_html 为展示页面目录, Xhprof_lib 为库目录。
先试一下,下一篇写使用的。不过还是先到网上拷贝一份网友的使用方法,免得大家找的时间。
使用 从此处开始转载自: sourcejoy.com 的原创文章
xhprof_enable(); // 统计的代码部分之前加,如果要显示 CPU 占用 可以加入 XHPROF_FLAGS_CPU 参数,内存是 XHPROF_FLAGS_MEMORY ,如果两个一起: XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY ,如: xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
xhprof_disable(); // 统计的代码部分之后加
这样xhprof 就可以统计当前页面的函数性能情况了。xhprof 会把每次访问加入统计代码的页面的性能统计结果在指定目录下生成一个文件,文件名命名方式为:本次访问的系统ID. 命名空间,每次刷新页面都会重新生成一个文件,每个的系统ID 都不同。
然后通过xhprof_html 目录的http 访问url 来查看结果。如:http://app/xhprof_html/?run= 运行id&source= 命名空间(其中运行ID 和命名空间可以根据xhprof 生成的文件名来确定)
下面是个例子:
<?php
function a(){
echo 'a';
}
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); //XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY
// run program
a();
// stop profiler
$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();
$run_id = $xhprof_runs->save_run($xhprof_data, "sourcejoy"); // 第一个参数是 xhprof_disable() 函数返回的运行信息,第二个参数是自定义的命名空间字符串(任意字符串),返回运行ID 。
?>
名词:
1. Inclusive Time : 包括子函数所有执行时间。
2. Exclusive Time/Self Time : 函数执行本身花费的时间,不包括子树执行时间。
3. Wall Time : 花去了的时间或挂钟时间。
4. CPU Time : 用户耗的时间+ 内核耗的时间
5.Inclusive CPU : 包括子函数一起所占用的CPU
6.Exclusive CPU : 函数自身所占用的CPU
最后要说点,这个xhprof 程序有点小bug ,还不支持php5.2 一下的版本,不过这都是小问题,关键是能直观告诉我们程序的性能问题,这个很重要,我们自己开发程序的时候用这个进行性能检查是很不错的。
-END-
本文是sourcejoy.com 的原创文章,要转载必须写明来自http://www.sourcejoy.com/ 如果没表明转载自本站,可能会受到一封律师信哦~