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 来查看详细的分析数据了。

  • 相关阅读:
    HTB-靶机-Charon
    第一篇Active Directory疑难解答概述(1)
    Outlook Web App 客户端超时设置
    【Troubleshooting Case】Exchange Server 组件状态应用排错?
    【Troubleshooting Case】Unable to delete Exchange database?
    Exchange Server 2007的即将生命周期,您的计划是?
    "the hypervisor is not running" 故障
    Exchange 2016 体系结构
    USB PE
    10 months then free? 10个月,然后自由
  • 原文地址:https://www.cnblogs.com/guoyongrong/p/3859907.html
Copyright © 2011-2022 走看看