上一篇我们介绍了如何基于xhprof扩展分析PHP性能,记录在日志中,最后使用xhprof扩展自带的UI进行展示它在网络上。本文将介绍2个知识点:使用xhgui代替xhprof默认的UI界面,更容易分析使用tideways扩展替换xhprof扩展,使用更美观的UI:xhguixhgui支持XHProf、Uprofiler或Tideways扩展,即只要安装了这些扩展之一就可以了。本次测试实际使用的是tideways扩展(切换到XHProf扩展后网页上看不到数据,原因不明,切换到Uprofiler后没有数据。)。xhprof虽然来自facebook,但是已经很久没有更新了。官方源已经显示thispackageareabandonedandlongermaintained(这个包被放弃并且不再维护)。潮汐恰恰相反。商业公司一直在维护和积极支持PHP7。这两个扩展都是开源的。综上所述,我建议大家选择tideways来分析代码。安装潮汐扩展:wgethttps://github.com/tideways/php-xhprof-extension/archive/v4.1.5.tar.gz-Ophp-xhprof-extension-4.1.5.tar.gztarxzf/php-xhprof-extension-4.1.5.tar.gzcdphp-xhprof-extension-4.1.5phpize./configuremake&&makeinstallinstallxhguicd/work/git克隆https://github.com/perftools/xhgui.gitxhgui如果需要安装中文界面,可以:gitclonehttps://github.com/laynefyc/xhgui-branch.gitxhgui然后安装xhgui依赖:cdxhguiphpinstall.php安装需要几分钟,请稍候耐心地。设置缓存目录的权限,允许nginx创建文件:chmod-R777xhgui已经写入了注入入口文件,位于external/header.php,所以我们不需要手动写入xhprof.inc.php注入文件类似于前一个。安装MongoDB和客户端xhgui,用于将日志写入MongoDB,所以需要安装MongoDB服务端才能使用xhgui。安装和启动MongoDB服务器的过程在此省略。为了提高MongoDB的性能,可以运行以下命令添加索引:$/usr/local/mongodb/bin/mongo>usexhprofdb.results.ensureIndex({'meta.SERVER.REQUEST_TIME':-1})db.results.ensureIndex({'profile.main().wt':-1})db.results.ensureIndex({'profile.main().mu':-1})db.results.ensureIndex({'profile.main(.cpu':-1})db.results.ensureIndex({'meta.url':1})同样,由于xhgui是PHP写的,所以也需要读取MongoDB中的数据,MongoDBphp需要安装客户端结束:peclinstallmongodb然后在php.ini文件中添加配置:[mongo]extension=mongo.so查看扩展是否安装成功:php-m|grepmongo并重启php-fpm服务。配置xhguixhgui的config目录有一个config.default.php,复制为config.php,如果mongodb地址不是默认的,修改:'db.host'=>'mongodb://127.0.0.1:27017',并修改采样频率,默认为1/100,测试时改为true:'profiler.enable'=>function(){//returnrand(1,100)===42;返回真;},配置项注入在上一篇文章中,我们介绍了注入的入口文件可以写在php.ini或者nginx中。我建议写在nginx配置里,只会影响nginx对应的项目,不会影响所有使用php环境的项目。入口文件使用xhgui自带的注入文件:jifen.cc.conflocation~\.php${fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;fastcgi_paramPHP_VALUE"auto_prepend_file=/work/external/header.php";includefastcgi_params;}要配置xhguiweb,我们修改xhprof.test.com.conf为:server{listen80;服务器名称xhprof.test.com;#root/work/xhprof/xhprof_html;root/work/xhgui/webroot/;索引index.phpindex.html;location/{if(!-e$request_filename){最后重写./index.php;}}location~\.php${fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;包括fastcgi_params;}}重启nginx服务。我们多次请求应用界面,打开浏览器输入http://xhprof.test.com/,可以看到:点击一个请求查看详情:参考1.PHP性能跟踪分析的安装与使用工具xhprof-马新才的技术博客-SegmentFault的思考https://segmentfault.com/a/11...2.Tideways与xhgui打造PHP非侵入式监控平台|我是一只大熊http://blog.it2048.cn/article。..反盗版声明:本文为原创文章,原创于公众号飞鸿影博客(fhyblog)和博客园,转载需征得作者同意。
