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

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第50章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第49章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第48章 读书笔记(待更新)
    Spring Boot 中使用 Quartz 实现任务调度
    实战 FastDFS Java 客户端上传文件
    分布式文件系统之 FastDFS
    Java 持久层框架之 MyBatis
    C语言实现贪吃蛇
    [转载]分享三篇非常好的学习心得
    selenium加载cookie报错问题:selenium.common.exceptions.InvalidCookieDomainException: Message: invalid cookie domain
  • 原文地址:https://www.cnblogs.com/guoyongrong/p/3859907.html
Copyright © 2011-2022 走看看