PHP性能优化工具–xhprof安装,这里我先贴出一般步骤:
1.获取xhprof
2.编译前预处理
3.编译安装
4.配置php.ini
5.检查操作结果
然后我们开始安装xhprof工具吧:
1.获取xhprof
可直接输入网站下载,也可直接输入网站wget
#wget http://pecl.php.net/get/xhprof-0.9.4.tgz
#tar zxf xhprof-0.9.4.tgz
2.编译前预处理
在编译xhprof之前先做预处理,生成configure文件;
#cd xhprof-0.9.4
#cd extension
#phpize
phpize 没有这样的命令
用来扩展php扩展模块
phpize是属于php-devel所以只要操作内容,
yum install php-devel就行。
命令:yum install php-devel -y
位置:/usr/bin/phpize
配置php.ini
在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=
xhprof.output_dir=/tmp/xhprof
注:如果需要64位系统xhprof.so复制到相关文件lib64的目录下
3.编译安装
#./configure –with-php-config=/usr/bin/php-config
#make && make install
安装成功
4.配置php.ini
在php附加配置文件,xhprof扩展,php.ini
[xhprof]
extension=xhprof.so;
xhprof.output_dir=/usr/share/nginx/html/tmp/xhprof
注:如果需要64位系统xhprof.so文件拷贝 /lib64的目录下
#cp /usr/lib64/php/modules/xhprof.so /lib64/
5.检查操作结果
把例子复制到自己身上web实例演示在目录下进行:
#cp -r examples xhprof_html xhprof_lib /usr/share/nginx/html/xhprof
a.操作实例查看效果,输入浏览器
// cpu:XHPROF_FLAGS_CPU 内存:XHPROF_FLAGS_MEMORY
// 若两者一起:XHPROF_FLAGS_CPU XHPROF_FLAGS_MEMORY
xhprof_enable(XHPROF_FLAGS_CPU XHPROF_FLAGS_MEMORY);
// 要测试的php代码
$data = xhprof_disable(); //返回运行数据
// xhprof_lib这个目录存在于下载的包中。记得将目录包含在操作中php代码中
include_once "xhprof_lib/utils/xhprof_lib.php";
include_once "xhprof_lib/utils/xhprof_runs.php";
$objXhprofRun = new XHProfRuns_Default();
// 第一个参数j是xhprof_disable()函数返回的运行信息
// 第二个参数是自定义命名空间字符串(任意字符串),
// 返回运行ID,用这个ID查看相关操作结果
$run_id = $objXhprofRun->save_run($data, "xhprof");
var_dump($run_id);
http://localhost/xhprof/examples/sample.php
b.复制上面到运行结果(http路径),再次放入浏览器,填写前面对应的域名:
http://localhost/xhprof/xhprof_html/index.php?run=5307089e3e0fe&source=xhprof_foos
检查结果,正确:
如果输入浏览器没有数据
这种情况:Run #530707980ee18: Invalid Run Id = 530707980ee18
错误结果:
也许你的配置权限不够,请给个权限,可以直接777,然后重新操作这一步看效果。
到这里xhprof安装结束了。开始你的性能优化之旅。有了这个工具,你会事半功倍。~~
对于xhprof名词解释:
Function Name 函数名
Calls 调用次数
Calls% 调用百分比
Incl. Wall Time (microsec) 调用包括子函数的所有时间 微秒算(一百万分之一秒)
IWall% 调用的百分比包括子函数的所有时间
Excl. Wall Time (microsec) 函数执行本身所花费的时间不包括子树执行时间,以微秒计算(100万分之一秒)
EWall% 函数执行本身所花费的时间百分比不包括子树执行时间
Incl. CPU(microsecs) 调用包括子函数的所有费用cpu时间。减Incl. Wall Time即为等待cpu的时间
减Excl. Wall Time即为等待cpu的时间
ICpu% Incl. CPU(microsecs)的百分比
Excl. CPU(microsec) 函数执行本身的费用cpu时间,不包括子树执行时间,计算(100万分之一秒)。
ECPU% Excl. CPU(microsec)的百分比
Incl.MemUse(bytes) 包括使用子函数的内存。
IMemUse% Incl.MemUse(bytes)的百分比
Excl.MemUse(bytes) 函数执行自己的内存,用字节计算
EMemUse% Excl.MemUse(bytes)的百分比
Incl.PeakMemUse(bytes) Incl.MemUse的峰值
IPeakMemUse% Incl.PeakMemUse(bytes) 峰值百分比
Excl.PeakMemUse(bytes) Excl.MemUse的峰值
EPeakMemUse% EMemUse% 峰值百分比