Windows版本Apache+php的Xhprof应用__[2]
[计划]
“Windows版本Apache+php的Xhprof应用__[1]”中已经解决了下载,配置的问题,所以这里的工作是接着进行的,我们以调试一个 php代码的文件来看看是怎么用xhprof的。另外我测试了一个非常简单php页面,页面本身还没有优化过,这样比较的清晰和直观,优化过的也看不出 xhprof的分析有啥价值了。
[目标]
分析我的多层次调度页面index.html的性能,说明一下,xhprof只能分析php代码的性能,我的.html文件本身支持嵌入的php代码解析,所以不是说xhprof可以分析.html文件。
[步骤]
- 在apache的httpd.conf文件中,增加xhprof的路径配置,以方便分析性能时调度xhprof的库文件来分析php的代码性能,需要增加到httpd.conf的内容如下:
<Directory "M:/htdocs/xhprof_html/">
Options FollowSymLinks ExecCGI
AddHandler fcgid-script .php
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<Directory "M:/htdocs/xhprof_lib/">
Options FollowSymLinks ExecCGI
AddHandler fcgid-script .php
AllowOverride None
Order allow,deny
Allow from all
</Directory>
<IfModule alias_module>
Alias /xhprof_html/ "M:/htdocs/xhprof_html/"
Alias /xhprof_lib/ "M:/htdocs/xhprof_lib/"
</IfModule>
- 大概说一下,我的“xhprof_html”和“xhprof_lib”全部放在了M盘的htdocs目录里,你需要自己改为自己的路径,另外,我的开发 主要是在php以fast-cgi方式运行下调试的,因为我的生产环境用的是fast-cgi实现的,这里顺便说下,fast-cgi的确非常好,破机子 访问量翻番居然扛下来了,至少暂时不用去换硬件了,赞一个的说。
- 下载和安装Graphviz,并修改xhprof的代码,然后实现输出调用过程的图形,百度搜索Graphviz关键字,然后到官方找到windows版 本的就可以了,网上还有其他网友制作的绿色版本,反正很容易得到,版本要在2.28以上最好,大家自己去找找吧,有网友说我第一篇里提供的地址下载不到那 个xhprof的dll文件,我只能说如果baidu里搜是木有的,要到google里去用英文模式搜,很容易找到,因为返回的结果很少啊。又跑题了,我 这里是把Graphviz安装到我的D:\WebServices目录的,如图1
图1
- 装好了就放那别动了,等下备用,接下来到M:\htdocs\xhprof_lib\utils目录去修改callgraph_utils.php库文件,如图2
- 如果是在widows环境下,$cmd 命令上面的参数 2 => array("file", "D:/tmp/error-output.txt", "a"),/dev/null需改成你自己定义的一个临时目录,后面文件名随便给否则就会出现shell错误
图2
- 注意你的Graphviz是安装在哪里的,路径就添哪个位置,好了,到这里,就可以开始评估index.html的性能了,在需要进行性能分析的页面中增加代码,得到xhprof的调度过程分析结果,并输出直观的图形,在含php代码的页面顶端加入如图3代码
图3
- 注释一下,第一段include放在头上,这个没啥可说的,注意,第二个红框指示的代码放的的位置很重要,因为这个代码上面的代码不会被分析的。
- 在php代码的尾部加入如图4代码
图4
图4附图:报告链接
-
注释一下,高亮的是查看性能分析页面的链接,注意你的apache配置,因为我这个例子是把xhprof直接放在了所有的开发站点的相对目录/xhprof_html/下的,如果你的另有花样,这里不写对,那永远也看不到xhprof分析的页面。
- 加好了代码,就是到浏览器里面去直接执行含有xhprof指令的页面啦,执行和正常一样,不过页面的最低部增加了一个报告链接,如图5所示,点击就显示出了xhprof的函数工况报告
图5
-
红色的就是性能瓶颈的部分,呵呵,清晰直观,希望大家成功!
[结论]
windows下面也可以像linux下面那样调试啦~