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

php5.3 XHProf性能测试

程序员文章站 2022-05-09 23:37:58
...
{Xhprof}

XhProf是一个分层PHP性能分析工具,可它报告函数级别的请求次数和各种指标,包括阻塞时间,CPU时间和内存使用情况。

[情况]

  • 以 上两个应用Apache+php组合在Windows上是比较常见,一般用来组织开发环境,或者调试环境,或者测试环境,当然也有不少是用于生产环境的, 对于我而言,我是用他们来进行开发的,由于比较习惯了在Windows下面开发,尽管自己也搭建了基于Linux虚拟机的开发平台,用着也还可以,但总是 无法舍离Windows下的环境。

  • 我 一直是eclipse+xdebug的方式开发调试,没有遇到太多的问题,开发也比较的顺利,不过昨天在测试一个页面的时候,发现php出现了一种类似锁 死的现象,即执行该页面后,php-cgi一直挂在进程里,既没有cpu消耗,也没有内存级数增长,仅仅是停留着不动,网页也不生成,百思不得其解,而且 仔细检查和调试代码也没有发现明显的瓶颈,另外我是在自己的6核电脑上测试的,文件系统也是正常的,锁死就变成了很奇怪的事情。我自己使用的是 Apache_1.3.37-Win32+php-5.2.6-Win32+Xdebug-2.1.2版本调试的,发现在调试过程中,整个eclipse 都处于无响应的状态,似乎这种锁死有传导性,故调试一直无法进行,由于写了比较多的代码,有点累,没有去想是什么具体原因,暂且休息一会。

  • 在搜索的时候无意中发现了Xhprof工具,看了一些博主的文章,发现这个工具可以分析程序性能,值可能有一些粗略,是基于函数的,但却是很直观和清晰的,非常感兴趣,所以挂起了刚才的开发,研究下这个东西。

[过程]

  • 由 于参考了好几个博文,而且都是基于Linux版本的介绍,没有找到一个基于Windows的介绍,总不能一下子就切换到Linux下面去开发吧?所以又搜 索,发现一个外文站点提供了一个编译好的Xhprof,不过版本是基于php-5.3.3-Win32版本的,代码是基于Xhprof的0.9.2版本 的,呵呵,看来有人和我想到一块儿了,不过搜索的结果非常少,中文的几乎几乎没有,外文的也就只有凤毛麟角的几个结果而已。

  • 从 该外文站点下载了xhprof for windows版本,又从facebook原始发布站下载了相关的xhprof代码和相关的生成页面文档,由于xhprof是基于php5.3.3编译 的,还需要准备php5.3.3,直接去php.net去拉一个vc6线程安全版本下来。

  • Apache有现成的,所以直接修改了原来的http.conf,把php5.3.3以cgi方式引入apache中,调试了一下,顺利的集成,phpinfo一切正常,xdebug也是一切正常的,现在开始加入xhprof的准备工作都做好了。

  • 直接把xhprof for windows版本安置好,然后在要测试的页面里面加入调试页面和代码,就可以啦。

[步骤]

  • 先要下载xhprof for windows版本,这个没得说,地址:http://www.benjamin-carl.de/?download=XHProf-0.10.0-PHP-5.3.3-VC6-x86-TS,http://pan.baidu.com/share/link?shareid=239782&uk=337775431下载的zip文件解压缩后是一个dll文件,直接放到php的ext目录里面就可以了,如图1所示:

图1

  • 然 后要把xhprof的两个包含了调试输出页面的子目录安置好,这里我选择了直接安置在自己网站发布位置的根目录里,也就是apache默认的htdocs 的目录里面,我这里的htdocs是转移到另外一个开发U盘上的,方便在不同的地方编制代码,如图2所示,这里图示了一共3个文件夹,分别是 xhprof_html、xhprof_lib、xprof_log,其中xhprof_html和xhprof_lib是从下载的xhprof源代码文 件包里得到的,包所在站点:http://pecl.php.net/package/xhprof,xhprof下载地址:http://pecl.php.net/get/xhprof-0.9.2.tgz,然后自行在htdocs里创建xprof_log文件夹,这个文件夹是用来存放页面分析数据的。


图2

  • 由于我的Apache+php已经完全调试好,所以要处理的只有php.ini文件,开启办法很简单,在该文件的末尾加上如下代码即可:

[xhprof]
extension=php_xhprof.dll
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
xhprof.output_dir="M:/htdocs/xhprof_log"

“提示:xhprof.output_dir=这个使用于设置性能分析数据存放位置的,我这里应为htdocs在M盘,故设置为M:/htdocs/xhprof_log,也就是上述的目录位置”

  • 添加成功后,可以重启Apache看看phpinfo()信息中是否包含了xhprof的段,有的话,那就安装成功了,提示:以cgi方式运行的php修改了php.ini以后,可以直接运行phpinfo()查看结果,而无须重新启动Apache。结果的话如图3所示:

图3

  • 好了,至此为止,xhprof已经正确的安装好了。