1、下载XHProf

到这里 http://dev.freshsite.pl/php-extensions/xhprof.html 下载Windows版本的XHProf,我这里选择下载

XHProf 0.10.3 for PHP 5.3 vc9 和 xhprof_html

2、安装XHProf

把压缩包里的 xhprof_0.10.3_php53_vc9.dll 拷贝到PHP的ext目录下,然后在php.ini配置里面加入配置(不要忘记创建对应的文件夹)

  1. [xhprof]
  2. extension=xhprof_0.10.3_php53_vc9.dll
  3. ; directory used by default implementation of the iXHProfRuns
  4. ; interface (namely, the XHProfRuns_Default class) for storing
  5. ; XHProf runs.
  6. xhprof.output_dir="d:/PHP/xhprof/log"

重启Apache,看看phpinfo()里面有没有xhprof相关信息!

3、使用XHProf

将 xhprof_html.zip 解压到你想测试的网站根目录,如我放在了网站目录的 /public/xhprof/windows 下。

测试文件:

  1. <?php
  2. function bar($x)
  3. {
  4. if ($x > 0)
  5. {
  6. bar($x - 1);
  7. }
  8. }
  9.  
  10. function foo()
  11. {
  12. for ($idx = 0; $idx < 5; $idx++)
  13. {
  14. bar($idx);
  15. $x = strlen("abc");
  16. }
  17. }
  18.  
  19. // 启动xhprof
  20. xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
  21.  
  22. // 调用foo函数,也是我们要分析的函数
  23. foo();
  24.  
  25. // 停止xhprof
  26.  
  27. $xhprof_data = xhprof_disable();
  28.  
  29. // 取得统计数据
  30. //print_r($xhprof_data);
  31.  
  32. $os = 'windows';
  33.  
  34. $XHPROF_ROOT = dirname(__FILE__) . '/public/xhprof/' . $os;
  35. include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
  36. include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
  37.  
  38. // 保存统计数据,生成统计ID和source名称
  39. $xhprof_runs = new XHProfRuns_Default();
  40. $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo"); // source名称是xhprof_foo
  41.  
  42. // 查看统计信息
  43. echo "<div style='margin: 50px auto; padding :10px; width: 92px; font-size: 16px; background: #ff0000;'><a style='color:#ffff00;' href='/public/xhprof/" . $os . "/xhprof_html/index.php?run=" . $run_id . "&source=xhprof_foo' target='_blank'>XHProf view</a></div>";

当点击链接“[View Full Callgraph]”时,会报错:

failed to execute cmd: " dot -Tpng"

所以还需要下载图形工具 Graphviz

4、下载Graphviz

到这里 http://www.graphviz.org/Download_windows.php 下载Windows版本的Graphviz,我这里选择下载

graphviz-2.38.zip

5、安装Graphviz

解压后,把Graphviz拷贝到某个目录,如 d:/PHP/xhprof/graphviz-2.38/

6、配置Graphviz

找到上述提到网站目录 /public/xhprof/windows/ 下的 config.php 文件,调整如下:

  1. <?php
  2. /**
  3. * Set the absolute paths on your system
  4. */
  5. define('ERROR_FILE', 'd:/PHP/xhprof/log/xhprof_dot_errfile.log');
  6. define('TMP_DIRECTORY', 'd:/PHP/xhprof/tmp');
  7. define('DOT_BINARY', 'd:/PHP/xhprof/graphviz-2.38/release/bin/dot.exe');

重新点击链接 [View Full Callgraph],一张期待已久的效果图出来啦:

延伸阅读:

给CentOS6.3 + PHP5.3 安装PHP性能测试工具 XHProf-0.9.2

给Windows + Apache 2.2 + PHP 5.3 安装PHP性能测试工具 xhprof_0.10.3_php53_vc9.dll的更多相关文章

  1. 【转】给Windows + Apache 2.2 + PHP 5.3 安装PHP性能测试工具 xhprof

    原文链接:http://blog.snsgou.com/post-816.html 1.下载XHProf 到这里 http://dev.freshsite.pl/php-extensions/xhpr ...

  2. Windows环境下Android Studio v1.0安装教程

    Windows环境下Android Studio v1.0安装教程 准备工具 JDK安装包. 要求:JDK 7以及以上版本. Android Studio安装文件. Windows: exe(包含SD ...

  3. 【转】Windows环境下Android Studio v1.0安装教程

    原文网址:http://ask.android-studio.org/?/article/9 http://android-studio.org/index.php/docs/experience/1 ...

  4. 自己动手打造WEB服务器 Windows + Apache + PHP + MySQL

    XWAMP并不打算打造一个多功能,零配置,方便调试的工具.XWAMP只是把原程序简单的组合在一起,利用CMD命令控制,真正的绿色版,只为了多学习点Windows + Apache + PHP + My ...

  5. WAMP(Windows、Apache、MySQL、php)安装配置过程常见问题

    WAMP(Windows.Apache.MySQL.php)安装配置过程 可以参考该网友的总结(总结的不错,鼓掌!!): http://www.cnblogs.com/pharen/archive/2 ...

  6. 搭建基于Windows + Apache + PHP + MySQL的Moodle平台

    说起Moodle,我相信学习教育技术的同学应该都不陌生,在大学的网络与远程教育课中,我有幸与传说中的Moodle相遇,然后相知,但是我绝对不会跟你们说一直到我毕业,我都没有找到一个合适的时间与这位Ms ...

  7. Windows+Apache+PHP5配置

    今天配置Windows+Apache+PHP时,遇到的问题,记录下供大家参考,也供自己以后参考!需要特别注意的:PHP v9版本的 非线程安全的 只适用于IIS,5.3版本的NTS版的没有php5ap ...

  8. windows Apache 环境下配置支持HTTPS的SSL证书

    windows Apache 环境下配置支持HTTPS的SSL证书 1.准备工作 1)在设置Apache + SSL之前, 需要做: 安装Apache, 下载安装Apache时请下载带有SSL版本的A ...

  9. Windows+Apache+Python+Django 踩坑记录

    摘要 使用Python进行Web项目开发:相对于主流三大Web端解决方案(Java/.NET/PHP) Python在某些方面具有一定的优势,相对 Java/.NET 有更轻量级的部署方案,相对PHP ...

随机推荐

  1. rpm包安装过程中依赖问题“libc.so.6 is needed by XXX”解决方法

    rpm包安装过程中依赖问题"libc.so.6 is needed by XXX"解决方法 折腾了几天,终于搞定了CentOS上的Canon LBP2900打印机驱动.中间遇到了一 ...

  2. 数据结构作业——order(二叉树遍历)

    order Description 给出一棵二叉树的中序遍历和每个节点的父节点,求这棵二叉树的先序和后 序遍历. Input 输入第一行为一个正整数 n 表示二叉树的节点数目, 节点编号从 1 到 n ...

  3. 《Linux菜鸟入门2》Ldap

    ldap网络帐号1.ldap是什么ldap目录服务认证,和windows活动目录类似,就是记录数据的一种方式 2.ldap客户端所需软件yum install sssd krb-workstation ...

  4. 初学angular-简单的angular指令

    实现一个简单的input清空内容,且清空对应ngModel 前台部分 <html ng-app="hpapp"> <head> <meta chars ...

  5. FFT质数打表程序

    #include<bits/stdc++.h> using namespace std; typedef long long ll; void sol(ll x){ int y=0; fo ...

  6. C#中值类型和引用类型图解

    举几个值类型和引用类型的内存配置: 值类型存储在栈中,引用类型堆里: 1,数组 数组是引用类型,但是数组的元素可以是值类型或引用类型 2. 结构 结构是值类型,简略的看个例子 struct sampl ...

  7. Swift学习一

    // 定义一个类 class AClass { } // 数据转换 var a = Int(4.555) // 可选值 var num: Int? = Int("23k") // ...

  8. 快捷键_Mac

    苹果Mac系统常用快捷键 Command+Tab 任意情况下切换应用程序 - 向前循环 Shift+Command+Tab 切换应用程序 - 向后循环 Command+L 当前程序是浏览器时,可以直接 ...

  9. Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

       FastCGI编程包括四部分:初始化编码.接收请求循环.响应内容.响应结束循环. FCGX_Request request; FCGX_Init(); ); FCGX_InitRequest(& ...

  10. git merge 和 git rebase 小结

    Git merge是用来合并两个分支的. git merge b # 将b分支合并到当前分支 同样 git rebase b,也是把 b分支合并到当前分支 ---------------------- ...