Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PHP性能监控--xhprof安装 #18

Open
fredshare opened this issue Dec 14, 2014 · 0 comments
Open

PHP性能监控--xhprof安装 #18

fredshare opened this issue Dec 14, 2014 · 0 comments
Labels

Comments

@fredshare
Copy link
Owner

PHP性能检测扩展—xhprof安装

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

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

  • 安装lampp

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

  • 安装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_htmlxhprof_lib /opt/lamp/htdocs #应用程序所在目录,其中xhprof_lib是生成统计数据用到的类库。xhprof_html是查看统计数据的时候,用到的类库。
cd extension
/opt/lampp/bin/phpize
./configure
make
make install

编译xhprof的时候出了很多问题,比如:
案例
这个问题是需要安装 此插件。可查看解决。

  • 修改php.ini配置
[xhprof] 
extension=xhprof.so 
xhprof.output_dir=/home/sharexie/xhprof  //如果不加存放目录的话,默认是放在/tmp下面

重启lampp:

/opt/lamp/lamp restart
  • 安装graphviz
cd /usr/src
wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.24.0.tar.gz
tarzxf graphviz-2.24.0.tar.gz
cd graphviz-2.24.0
./configure&&make && make install
  • 安装libpng

上面的那个工具依赖libpng。到libpng官网down分源码,再次编译一下。
SF.NET上的地址,我下的是这个地址

  • 安装zlib
  • 查看效果

测试代码:

<?php
    index();
    function index(){
        phpinfo();
        b();
    }
    function b(){
        echo "i love you";
    }
    //启动xhprof
    xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
    //停止xhprof
    $xhprof_data = xhprof_disable();
    //取得统计数据
    print_r($xhprof_data);
    $XHPROF_ROOT = realpath(dirname(__FILE__) . '/');
    echo $XHPROF_ROOT;
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
    include_once $XHPROF_ROOT . "/xhprof_lib/utils/callgraph_utils.php";
    //保存统计数据,生成统计ID和source名称
    $xhprof_runs = new XHProfRuns_Default();
    print_r($xhprof_runs);
    $run_id = $xhprof_runs->save_run($xhprof_data, "test"); //source名称是xhprof_foo
    //弹出一个统计窗口,查看统计信息
    echo "<script language='javascript'>window.open('../xhprof_html/index.php?run=" . $run_id . "&source=test');</script>";
?>

效果如下:

@fredshare fredshare added the blog label Dec 14, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant