windows配置xhprof,PHP性能分析工具

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本来以为配置这么一个工具不会费很大的力气,后面发现完全不是。

本来以为配置这么一个工具不会费很大的力气,后面发现完全不是。


一、小插曲


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

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


  image.png

 


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


  image.png

 


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


  image.png

 


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


  image.png


 

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


  image.png

 


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

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

 

二、windows环境


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


image.png

 

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


image.png

 

三、php.ini


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


image.png

 

2)最后配置日志文件


image.png

 

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


image.png

 

四、demo


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


image.png


 

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

image.png

 

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


image.png

 

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


image.png

 


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


  image.png

 


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


  image.png

 


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


  image.png

 


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

  image.png

 

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.38\bin的绝对路径写上去。


image.png

 


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


image.png


 

如果想要应用到实际项目中,肯定还有很多地方需要修改。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
存储 负载均衡 Java
如何配置Windows主机MPIO多路径访问存储系统
Windows主机多路径(MPIO)是一种技术,用于在客户端计算机上配置多个路径到存储设备,以提高数据访问的可靠性和性能。本文以Windows2012 R2版本为例介绍如何在客户端主机和存储系统配置多路径访问。
108 13
如何配置Windows主机MPIO多路径访问存储系统
|
1月前
|
Dart 搜索推荐 IDE
Windows下Zed编辑器配置Dart环境
本文介绍了Dart编程语言及其主要框架Flutter的优势,并推荐使用轻量级编辑器Zed进行Dart开发。详细步骤包括Dart环境的安装与配置,Zed编辑器的安装与个性化设置,以及如何在Zed中编写并运行Dart的HelloWorld程序。通过自定义任务实现Dart文件的快速运行,提高了开发效率。
|
1月前
|
监控 安全 网络安全
Windows Server管理:配置与管理技巧
Windows Server管理:配置与管理技巧
90 3
|
1月前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
168 1
|
1月前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
75 1
|
2月前
|
Web App开发 监控 JavaScript
一些常用的 Vue 性能分析工具
【10月更文挑战第2天】
162 1
|
3月前
|
SQL 缓存 关系型数据库
MySQL高级篇——性能分析工具
MySQL的慢查询日志,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long-query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。它的主要作用是,帮助我们发现那些执行时间特别长的 SOL 查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
MySQL高级篇——性能分析工具
|
2月前
|
测试技术 PHP 开发工具
php性能监测模块XHProf安装与测试
【10月更文挑战第13天】php性能监测模块XHProf安装与测试
36 0
|
2月前
|
弹性计算 关系型数据库 数据安全/隐私保护
阿里云国际版如何配置Windows服务器的虚拟内存
阿里云国际版如何配置Windows服务器的虚拟内存
|
3月前
|
监控 IDE Java
【Java性能调优新工具】JDK 22性能分析器:深度剖析,优化无死角!
【9月更文挑战第9天】JDK 22中的性能分析器为Java应用的性能调优提供了强大的支持。通过深度集成、全面监控、精细化分析和灵活报告生成等核心优势,性能分析器帮助开发者实现了对应用性能的全面掌控和深度优化。在未来的Java开发过程中,我们期待性能分析器能够继续发挥重要作用,为Java应用的性能提升贡献更多力量。