• PHP性能检测与优化—XHProf 安装


    PHP性能检测与优化—XHProf 安装


    XHProf是facebook开源出来的一个php轻量级的性能分析工具,跟Xdebug类似,但性能开销更低,还可以用在生产环境中,也可以由程序开关来控制是否进行profile。

    以下是我在虚拟机上安装的过程记录:

    1、安装lampp

    在虚拟机上安装lampp,必须是develop版本的。否则编译是通不过的。我就是因为编译时遇到 include php.h 时就失败了。所以需要先确保下载并安装了 xampp 的 devel packages。下载地址:http://www.apachefriends.org/download.php?xampp-linux-devel-1.7.4.tar.gz,然后解压到安装的目录tar -xvzf file -C /opt。下载 xampp 的 develop包的时候,注意要选择和自己当前的版本一致的 devel 包,因为 php 的扩展编译的时候,会附加版本信息,启动时进行检查,如果不一致,即便能够编译成功,也是不能够使用的。
    2、安装xhprof

    wget http://pecl.php.net/get/xhprof-0.9.2.tgz
    tar zxvf xhprof-0.9.2.tgz
    cd xhprof-0.9.2
    cp -r xhprof_html xhprof_lib /opt/lamp/htdocs #应用程序所在目录,其中xhprof_lib是生成统计数据用到的类库。xhprof_html是查看统计数据的时候,用到的类库。
    cd extension
    /opt/lampp/bin/phpize
    ./configure --with-php-config=/usr/local/php/bin/php-config

    sudo make

    sudo make install

    这时候so文件生成到了/opt/lampp/lib/php/extensions/no-debug-non-zts-20060613/这个目录下了。

     

    附件:编译过的so文件

     

    编译xhprof的时候出了很多问题,比如:

     

    这个问题是需要安装http://ftp.gnu.org/gnu/m4/m4-1.4.9.tar.gz和autoconf

    可查看http://tech.fblife.com/?p=106

    3、修改php.ini配置

    vi /opt/lampp/etc/php.ini

    [xhprof] 

     extension=xhprof.so 

     xhprof.output_dir=/home/sharexie/xhprof  //如果不加存放目录的话,默认是放在/tmp下面

    重启lampp:

    /opt/lamp/lamp restart
    3、安装graphviz

    cd /usr/src

    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
    4、安装libpng

    上面的那个工具依赖libpng。到libpng官网down分源码,再次编译一下。

    SF.NET上地址是 http://sourceforge.net/projects/libpng/files/libpng15/1.5.1/,我下的是http://sourceforge.net/projects/libpng/files/libpng15/1.5.1/libpng-1.5.1.tar.gz/download
    5、安装zlib

    6、查看效果

    测试代码

     1 <?php
     3     index();
     5     function index(){
     7         phpinfo();
     9         b();
    11     }
    13     function b(){
    15         echo "i love you";
    17     }
    19     //启动xhprof
    21     xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
    23     //停止xhprof
    25     $xhprof_data = xhprof_disable();
    27     //取得统计数据
    29     print_r($xhprof_data);
    31     $XHPROF_ROOT = realpath(dirname(__FILE__) . '/');
    33     echo $XHPROF_ROOT;
    35     include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
    37     include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
    39     include_once $XHPROF_ROOT . "/xhprof_lib/utils/callgraph_utils.php";
    41     //保存统计数据,生成统计ID和source名称
    43     $xhprof_runs = new XHProfRuns_Default();
    45     print_r($xhprof_runs);
    47     $run_id = $xhprof_runs->save_run($xhprof_data, "test"); //source名称是xhprof_foo
    49     //弹出一个统计窗口,查看统计信息
    51     echo "<script language='javascript'>window.open('../xhprof_html/index.php?run=" . $run_id . "&source=test');</script>";
    53 ?>

     

     

     

  • 相关阅读:
    光脚丫学LINQ(025):如何验证DBML和外部映射文件
    使用LINQ to SQL将数据从一个数据库复制到另一个数据库
    用VS2010 C#写DLL文件并且调用(原创)
    linux初识
    Run Only One Copy Of Application
    SQL Server 2008开启远程连接
    用Visual C#做DLL文件
    SQL Server代理服务无法启动的处理方法(转载)
    QTP连接Oracle
    What's AJAX?
  • 原文地址:https://www.cnblogs.com/fredshare/p/3372805.html
Copyright © 2020-2023  润新知