• XHProf的安装和使用(PHP性能测试神器)


    XHProf是Facebook开发的性能调试工具,帮助我们的PHP程序性能调优,更加健壮。XHProf安装和使用方法将在本章讲解。XHProf是PHP的PECL扩展。没有XDeBug那些耗费资源,更加的小巧。
        流程:程序开头打点,结尾打点。那么XHProf机会记录在两个点之间的所有代码响应时所耗费的时间、内存、CPU等各项指标,我们也可以知道一次请求调用了多少次MySQL,多少次Memcache,更加直观的指明优化道路。
        安装:
    ------------下载并编译PHP-XHProf源码------------
    wget http://pecl.php.net/get/xhprof-0.9.4.tgz
    tar -zxvf xhprof-0.9.4.tgz
    cd xhprof-0.9.4
    cd extension
    phpize
    ./configure --enable-xhprof
    make
    make test
    sudo make install
    
    ------------修改php.ini---------------
    sudo vim /etc/php.ini
    #在php.ini最下方加入以下:
    extension=xhprof.so
    xhprof.output_dir="/var/www/xhprof"
    
    -----------重启Apache--------------
    sudo apache restart
    
    进入刚才解压的安装包文件夹中,将xhprof_lib和xhprof_html复制到项目目录下。 接下来,建立一个头文件head.php,这是要打两个点中的开头的点:
    //head.php
    <?php
    if(extension_loaded('xhprof')){
        //载入下载的XHPROF包中的2个文件夹
        include_once 'xhprof_lib/utils/xhprof_lib.php';
        include_once 'xhprof_lib/utils/xhprof_runs.php';
        xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
    }
    
    再建立一个底部文件foot.php,这是要打两个点中的结尾的点:
    //foot.php
    <?php
    if(extension_loaded('xhprof')){
        $ns = 'myXhprof';
        //关闭profiler
        $xhprofData = xhprof_disable();
        //实例化类
        $xhprofRuns = new XHProfRuns_Default();
        $runId = $xhprofRuns->save_run($xhprofData, $ns);
        //前端展示库的URL
        $url = 'http://localhost/xhprof_html/index.php';
        $url .= '?run=%s&source=%s';
        //变量替换
        $url = sprintf($url, $runId, $ns);
        //输入URL
        echo '<a href="'.$url.'" target="_blank">查看结果</a>';
    }
    
    使用的最后一步:打点。现在我们建立一个测试文件index.php。测试我大Hello World。
    //index.php
    <?php
    include_once 'head.php';
    echo 'Hello World';
    include_once 'foot.php';
    
    可以看到,在http://localhost/index.php中,最下面是我们在foot.php中写的“查看结果”,点击进去,可以看到本次请求所使用到的所有函数的列表,每个函数所耗费的时间、CPU、Memory等信息,点击第一栏可以根据所选排序。点击[View Full Callgraph]可以看到由本列表所生成的流程图,从入口到哪个函数,又到哪个函数,这个函数调用了哪个函数,这个函数调用了多少次Memcache等,一幕了然。减少MC的调用,减少这个,减少那个,请求的响应速度能不快吗? 技巧: 我有1000个文件,现在我需要用XHProf检测一下我整个项目,难道要每个文件头部和尾部都要加上include吗? 在php.ini中添加:
    auto_prepend_file = /var/www/head.php
    auto_append_file = /var/www/foot.php
    
    或者在.htaccess中添加
    php_value auto_prepend_file = /var/www/head.php
    php_value auto_append_file = /var/www/foot.php
    
    报错: 1、点击[View Full Callgraph]查看图片的时候报错:failed to execute cmd:" dot -Tpng". stderr:`sh: dot:command not found`。 原因:原因:未安装图形化工具 解决:
    //红帽系列
    yum install graphviz
    //Ununtu
    apt-get install graphviz
    //OS X
    brew install graphviz
  • 相关阅读:
    gulp-css-spriter 将css代码中的切片图片合并成雪碧图
    通过JS模拟select表单,达到美化效果[demo]
    jQuery拖拽 & 弹出层
    sublime text 快速编码技巧 GIT图
    原生JS不到30行,实现类似javascript MVC的功能-minTemplate
    javascript拖拽原理与简单实现方法[demo]
    滚动焦点图实现原理和实践[原创视频]
    谈一谈值类型与引用类型和装箱与拆箱
    【原创】asp.net内部原理(三) 第三个版本 (最详细的版本)
    由JS函数返回值引发的一场”血案"
  • 原文地址:https://www.cnblogs.com/cnsanshao/p/7087476.html
Copyright © 2020-2023  润新知