zoukankan      html  css  js  c++  java
  • 转:使用XHProf优化PHP程序

    原文来自于:http://blog.sina.com.cn/s/blog_665fc8980100l8dq.html

    XHProf 是 FaceBook 开发的一个函数级别的 PHP 分层分析器。

    数据收集部分是一个基于 C 的 PHP 扩展,分析报告是一系列基于 PHP 的 HTML 导航页面。

    XHProf 能统计每个函数的调用次数、内存使用、CPU占用等多项重要的数据。

    并且 XHProf 还能比较两个统计样本,或从多个数据样本中汇总结果。

    XHProf 是分析 PHP 程序执行效率的利器,能让我们得到更底层的的分析数据。

    安装 XHProf

    XHProf 目前的最新版本是 0.92,你可以从它的主页(http://pecl.php.net/package/xhprof)下载它的最新版本。

    例如,我的 Web 目录是 /data/zivn.me,那么我可以通过下面的命令来安装 XHProf 。
    查看源代码
    打印?
    1    wget http://pecl.php.net/get/xhprof-0.9.2.tgz
    2    tar zxf xhprof-0.9.2.tgz
    3    cd xhprof-0.9.2
    4    cp -r xhprof_html xhprof_lib /data/zivn.me/
    5    cd extension
    6    phpize
    7    ./configure
    8    make
    9    make install

    当然,我们还需要修改 php.ini 来确保 XHProf 的正常运行。

    我们需要先建立一个目录用来存储分析数据文件,例如 /data/zivn.me/xhprof/。
    查看源代码
    打印?
    1    [xhprof]
    2    extension=xhprof.so
    3    xhprof.output_dir=/data/zivn.me/xhprof/

    使用 XHProf

    使用 XHProf 非常简单,我们只需要修改少许代码即可实现。

    例如,我们需要分析代码执行时关于 CPU 和内存的数据。
    查看源代码
    打印?
    01    xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
    02    
    03    // Test Code Start
    04    …………
    05    // Test Code End
    06    
    07    $xhprofData = xhprof_disable();
    08    
    09    include_once "/data/zivn.me/xhprof_lib/utils/xhprof_lib.php";
    10    include_once "/data/zivn.me/xhprof_lib/utils/xhprof_runs.php";
    11    
    12    $xhprofRuns = new XHProfRuns_Default();
    13    $xhprofRuns->save_run($xhprofData, "xhprof");

    这样,当我们运行程序之后,会在 /data/zivn.me/xhprof/ 之中生成分析数据文件。

    文件名类似于 4b4c239a86593.xhprof ,我们可以通过改变 save_run 的参数,来改变文件后缀。

    由于分析可能会影响响应速度,通常我们会加上一个随机数,随机取样,而不是分析所有用户请求的执行过程。
    查看源代码
    打印?
    01    $randKey = mt_rand(1, 10000);
    02    
    03    if ($randKey == 1)
    04    {
    05        xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
    06    }
    07    
    08    // Test Code Start
    09    …………
    10    // Test Code End
    11    
    12    if ($randKey == 1)
    13    {
    14        $xhprofData = xhprof_disable();
    15    
    16        include_once "/data/zivn.me/xhprof_lib/utils/xhprof_lib.php";
    17        include_once "/data/zivn.me/xhprof_lib/utils/xhprof_runs.php";
    18    
    19        $xhprofRuns = new XHProfRuns_Default();
    20        $xhprofRuns->save_run($xhprofData, "xhprof");
    21    }

    查看 XHProf 分析数据

    例如,我的域名是 zivn.me,现在我们就可以通过 web 来查看详细的分析数据了。

  • 相关阅读:
    本机可以,服务器却不行
    学习摘录1Hello, World!
    钻石问题
    OPEN OFFICE使用技巧
    操作符的重载
    函数重载
    关于“结构”好别扭的一段话
    多重继承
    OPEN OFFICE操作技巧3
    70个现代风格的HTML5 WordPress主题网站
  • 原文地址:https://www.cnblogs.com/guoyongrong/p/3859907.html
Copyright © 2011-2022 走看看