zoukankan      html  css  js  c++  java
  • php性能分析工具xhprof

    安装XHProf:

    wget http://pecl.php.net/get/xhprof-0.9.2.tgz
    tar zxf xhprof-0.9.2.tgz
    cd xhprof-0.9.2
    cp -r xhprof_html xhprof_lib 
    <directory_for_htdocs>
    cd extension
    phpize
    ./configure
    make
    make install


    编辑php.ini:

    [xhprof]
    extension=xhprof.so
    ;
    ; directory used by default implementation of the iXHProfRuns
    ; interface (namely, the XHProfRuns_Default class) for storing
    ; XHProf runs.
    ;
    xhprof.output_dir=<directory_for_storing_xhprof_runs>


    重启服务让修改生效,现在就可以使用XHProf了,不过为了显示效果更炫,最好继续安装Graphviz。

    安装Graphviz:

    wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
    tar zxf graphviz-2.24.0.tar.gz
    cd graphviz-2.24.0
    ./configure
    make
    make install

    ref:http://hi.baidu.com/thinkinginlamp/blog/item/f4bd08fa1a03ba9e59ee90fd.html

    下面是使用过程

    考虑到我的本地有多个虚拟站点,因此想做一个通用的引入以便一劳永逸。

    首先是新建头部和尾部文件,放到指定位置。eg:/var/www/xhprof_html/下:

    xheader.php
    
    <?php
    xhprof_enable();
    xfooter.php
    
    
    <?php
    $xhprof_data = xhprof_disable();
    
    // display raw xhprof data for the profiler run
    echo "<pre style='
            height: 200px;
            overflow-y: scroll;
             500px;
            border: 1px solid #000;
            padding: 1em;'>";
    print_r($xhprof_data);
    echo "</pre>";
    
    
    $XHPROF_ROOT = realpath(dirname(__FILE__) .'/..');
    //$XHOROF_ROOT = '';
    include_once $XHPROF_ROOT . "/xhprof_lib/config.php";
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
    
    // save raw data for this profiler run using default
    // implementation of iXHProfRuns.
    $xhprof_runs = new XHProfRuns_Default();
    
    // save the run under a namespace "xhprof_foo"
    $run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo");
    
    echo "<pre>".
         "<a href='http://www.trasinbm.com/index.php?run=$run_id&source=xhprof_foo' target='_blank'>".
         "View the XH GUI for this run".
         "</a>\n".
         "</pre>\n";

    下来配置apache将对每个站点加入引入文件:

            php_value include_path /var/www/
            php_value auto_prepend_file "xhprof_lib/xheader.php"
            php_value auto_append_file "xhprof_lib/xfooter.php"

    当然这段也可以放到.htaccess文件中,但别忘记设置:

     AllowOverride All

    重启apache就可以了。

    运行一段测试,得到:

    然后测试结果就出来了

    下面可以查看整个图表:

    使用runid进行对比:/callgraph.php?run1=4f9654adefc52&run2=4f965498a1134&source=xhprof_foo&all=1

    ref:

    http://mirror.facebook.net/facebook/xhprof/doc.html

    http://www.162cm.com/p/xhprofdoc.html#ui_setup
  • 相关阅读:
    ADFS登录界面自定义
    C# 不添加WEB引用调用WSDL接口
    C# 对象转XML 支持匿名类
    NSdata 与 NSString,Byte数组,UIImage 的相互转换
    《.NETer提高效率——环境部署》
    (五) Docker 安装 Nginx
    (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)
    (七) Docker 部署 MySql8.0 一主一从 高可用集群
    (八) Docker 部署 mongodb
    (四) Docker 使用Let's Encrypt 部署 HTTPS
  • 原文地址:https://www.cnblogs.com/zaric/p/2468257.html
Copyright © 2011-2022 走看看