首页 > 编程 > PHP > 正文

windows配置xhprof PHP性能分析工具

2020-03-22 17:12:16
字体:
来源:转载
供稿:网友
  • 本来以为配置这么一个工具不会费很大的力气,后面发现完全不是。

    一、小插曲

      早上显示电脑不能显示虚拟目录下的所有域名,但是能打开localhost,数据库连接也不行了。这个问题纠缠了我一个上午。对了还有个问题是输入法不能显示了,后面下载了个百度卫士修复了下,早上真是诸事不顺。

    1)一开始以为是firefox浏览器Fiddler插件的问题,然后关闭firefox中的插件,关闭Fiddler,发现还是不能打开网站。

    2)以为是浏览器的问题,马上打开另外几个浏览器,在chrome浏览器中打开,依旧不能打开,显示下面的错误,IE中也不行,这就奇怪了。然后根据错误代码在百度和google上面搜索,没查到什么有用的。

     

    3)后面经同事提醒可以看看apache的日志,看看有没有蛛丝马迹。但奇怪的是log都没有发生变化。

      

    4)打开防火墙,发现已经全部都关闭,后面打开windows日志,也没发现有啥问题。

     

    5)最后,再分析了下问题,发现其实是不能访问127.0.0.1这个域名导致的。然后再搜索找到一条指令,试一下,还真行了。

     

    6)一个莫名奇妙的问题出现在面前,做的第一件事情就是打开搜索引擎,然后描述问题;不过很多时候,一开始描述的并不是问题的核心所在,只能在不断尝试的时候,把问题分析的越来越清晰。

      下午安装xhprof也是一个差不多的分析问题的过程,我的php版本是5.5.17的。

    二、windows环境

    1)首先就是下载xhprof扩展包,搜索关键字“xhprof”,马上就找到了php官网上的下载链接,然并卵,这个linux环境的。

    2)马上搜索起来,还是顺利的找到了,而且版本还有多种,windows xhprof,朴素的页面我喜欢。

    三、php.ini

    1)把下载到的php_xhprof.dll,放到php的ext目录下面。然后打开扩展

    2)最后配置日志文件

    3)在phpinfo中查看是否出现了这个扩展,很好,已经出现了。

    四、demo

    1)在github上面下载到了xhprof的php相关代码事例。目录结构如下,等一下会用到的是examples,xhprof_html与xhprof_lib。

    2)现在examples文件夹中打开example.php文件,出现了下面的一串信息。

    3)然后打开xhprof_html,出现了下面的几个日志,这个日志存放在php.ini设置的xhprof.output_dir目录中。

    4)点击某个日志,出现了表格,里面代表的内容可以在网上查到。

    5)点击view full callgraph,这个其实是我最想看到的效果,满心期待的,可是出现了一个无情的错误,囧。

      

    6)在网上搜索到一篇文章,里面讲到是因为没有安装Graphviz,这个软件导致的,马上就去下载。

     

    7)以为下下来就可以了,万万没想到,一如既往的报错。在那篇文章中说到给config.php文件配置个目录,我在事例代码中看了半天都没找到这个文件,以为在忽悠我,后来我在那篇博客中下载了demo代码,果然发现了这个文件,不过即使把这个文件放到我这边,也没啥鸟用。又开始搜索,搜到篇洋人写的文章,也提到了配置。

      

    8)最后在Stack Overflow这个网站上面发现了灵感,这个网站还真是有用。

      

    9)还有这么个文件,马上找到这个函数xhprof_generate_image_by_dot

    $descriptorspec = array(       // stdin is a pipe that the child will read from       0 => array('pipe', 'r'),       // stdout is a pipe that the child will write to       1 => array('pipe', 'w'),       // stderr is a pipe that the child will write to       2 => array('pipe', 'w')       );  $cmd = ' dot -T'.$type;  $process = proc_open( $cmd, $descriptorspec, $pipes, sys_get_temp_dir(), array( 'PATH' => getenv( 'PATH' ) ) );

    10)发现读取了PATH这个环境变量,原来是要配置下这个环境变量的,我当时其实是配置过一次的,不过不是配的系统变量,囧,将Graphviz2.38in的绝对路径写上去。

    11)期待已久的图片终于出现了。

    PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表