1.后台项目即将上线。想借助一些工具来分析代码的稳定性和效率。我想起了我在上一个团队中使用的xhprof扩展;因为换了新电脑,所以需要重新编译这个扩展,现将安装和实际排错过程完整记录下来,方便更多读者回顾和帮助。二、操作步骤安装扩展配置扩展测试分析三、安装xhprof扩展PHP没有自带,需要单独安装才能使用。我这里使用源码安装方式。安装过程如下3.1下载PHP源码xhprof官方的PECL比较老。笔者的PHP版本为PHP7.1。因此,您需要在GitHub上下载较新的xhprof源码。参考命令如下:gitclonehttps://github.com/longxinH/xhprof3.2检测环境进入编译好的文件夹,参考命令cdxhprof/extension/现在我要编译源码。在编译之前,我可以使用phpze检测PHP环境。参考命令如下:phpize返回结果如下Configuringfor:PHPApiVersion:20160303ZendModuleApiNo:20160303ZendExtensionApiNo:3201603033.3编译安装生成Makefile,为下一步编译做准备。/configure返回以下结果:creatinglibtoolappendingconfigurationtag"CXX"tolibtoolconfigure:creating./config.statusconfig.status:creatingconfig.hconfig.status:config.hisunchanged开始编译安装make&&makeinstall返回如下结果:Buildcomplete.Don'tforgettorun'maketest'.Installingsharedextensions:/usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/从返回的信息可以看出已经安装完成,并显示了扩展文件的存放位置。4.1找到配置文件的位置要修改PHP的配置,首先要知道配置文件在哪里。这里可以使用PHP命令查看配置文件的存放位置。参考命令如下:php--ini执行命令后返回结果如下配置文件(php.ini)路径:/usr/local/etc/php/7.1加载配置文件:/usr/local/etc/php/7.1/php.ini扫描foradditional.inifilesin:/usr/local/etc/php/7.1/conf.dAdditional.inifilesparsed:/usr/local/etc/php/7.1/conf.d/ext-opcache.ini在返回的结果中,可以看到第一个配置文件的路径,我需要的是第二个文件php.ini查看扩展目录存放位置,参考命令如下cat/usr/local/etc/php/7.1/php.ini|grepextension_dir返回结果如下extension_dir="/usr/local/lib/php/pecl/20160303";extension_dir="分机";一定要适当设置extension_dir指令。;sql??ite3.extension_dir=4.2修改配置从返回结果可以看到扩展的存放目录位置如下/usr/local/lib/php/pecl/20160303现在需要将编译好的xhprof扩展复制到该目录下,参考命令如下cp/usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/xhprof.so/usr/local/Cellar/php@7.1/7.1.19/pecl/20160303/通过vim编辑器编辑配置文件,参考命令如下vim/usr/local/etc/php/7.1/php。ini在配置文件末尾加入xhprof的配置,自定义一个xhprof生成的源文件。参考配置如下:[xhprof]extension=xhprof.soxhprof.output_dir=/data/www/xhprof/save_output_dir,作者重启php-fpm使其配置生效。重启命令可以通过brew命令查看。参考命令如下:brewinfophp@7.1命令执行后,在返回信息中可以看到如下信息Tohavelaunchdstartphp@7.1nowandrestartatlogin:brewservicesstartphp@7.1或者,如果不需要/不需要后台服务可以直接运行:php-fpm所以笔者构造的restartPHP-FPM命令如下:brewservicesrestartphp@7.1restartcomplete之后,返回结果如下正在停止`php@7.1`...(可能需要一段时间)==>成功停止`php@7.1`(标签:homebrew.mxcl.php@7.1)==>成功启动`php@7.1`(标签:homebrew.mxcl.php@7.1)4.4验证安装现在验证xhprof扩展是否已经安装,参考如下命令php-m|grepxhprof命令执行后,扩展安装成功的返回结果会显示xhprof,如下图五、测试经过以上操作,笔者已经安装配置成功,现在需要使用验证xhprof分析效果的PHP代码。虚拟主机需要有根目录,并编辑nginx配置文件。具体操作如下:5.1.1创建工程目录创建工程根目录。参考命令如下mkdir-p/Users/song/mycode/work/test创建成功后,笔者需要将git拉下来的部分代码复制到项目根目录下。参考命令如下:cp-rxhprof/xhprof_html/Users/song/mycode/work/test/cp-rxhprof/xhprof_lib/Users/song/mycode/work/test/5.1.2编辑配置文件添加配置文件,参考命令/usr/local/etc/nginx/nginx.conf添加配置文件如下一个服务器{听80;服务器名称test.localhost;根/Users/song/mycode/work/test;indexindex.htmlindex.htmindex.php;location/{try_files$uri$uri//index.php?$query_string;}location~\.php${fastcgi_pass127.0.0.1:9000;fastcgi_indexindex.php;fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;包括fastcgi_params;127.0.0.1test.localhost5.2新的测试代码在git仓库的examples文件夹中。已经有demo代码了,但是这段代码的注释是英文的,排版方式笔者也不太容易看懂,所以笔者重新编辑了这个文件,参考以下步骤新建一个PHP文件用vimvim/Users/song/mycode/work/test/test.php在文件中加入如下代码save_run($xhprof_data,"xhprof_foo");echo"\nhttp://test.localhost/xhprof/xhprof_html/index.php?run=$run_id&source=xhprof_foo\n";保存代码后,通过浏览器访问对应的URL地址,URL地址如下http://test.localhost/xhprof/test.php5.3运行后结果分析结果,页面如下图所示到一个URL地址,复制打开URL地址,可以看到这段代码的分析结果,如下图,页面上有一个列表,显示了每个方法消耗的时间,如果你觉得list表示的不够清晰,点击页面的ViewFullCallgraph链接直接生成图片,如下图,很明显在测试方法中消耗了执行时间,所以笔者可以对该方法进行针对性优化作者:唐庆松微信:songboy8888日期:2018-08-27
