ScarShow

< IS >

Install Xhprof on Ubuntu 12.04

2012-08-26  /  IT  /  Note PHP

最近有想要分析自己程式碼的衝動,就想起了Facebook所撰寫的Xhprof,因為在安裝途中有點小問題,所以就紀錄一下完整的安裝過程。

安裝

編譯環境

sudo apt-get build-dep php5
sudo apt-get install php5-dev

Xhprof

wget http://pecl.php.net/get/xhprof-0.9.2.tgz
tar -zxvf xhprof-0.9.2.tgz
cd xhprof-0.9.2


複製xhprof所需要用到的程式到你的 web 根目錄。

cp -a xhprof_html xhprof_lib /path/to/htdocs


xhprof.c進行Patch。

curl https://github.com/facebook/xhprof/commit/a6bae51236.diff | patch -p1


開始編譯並安裝。

cd extension
phpize
./configure
make
sudo make install


修改php.ini設定檔。

[xhprof]
extension=xhprof.so
xhprof.output_dir=/tmp

Graphviz,這是用來繪製結果需要用到的套件。

sudo apt-get install graphviz

使用

重新啟動Web Service,然後將的程式碼加入需要測試的檔案中,並執行程式。

<?php
xhprof_enable();

// 待測程式碼

$xhprof_data = xhprof_disable();

include_once "xhprof_lib/utils/xhprof_lib.php";
include_once "xhprof_lib/utils/xhprof_runs.php";

$xhprof_runs = new XHProfRuns_Default();
$xhprof_name = 'xhprof_foo';

// 產生一個連結連至 Xhprof 統計結果
echo sprintf(
    '<a href="xhprof_html/index.php?run=%s&source=%s">summary</a>',
    $xhprof_runs->save_run($xhprof_data, $xhprof_name),
    $xhprof_name
);

輸出結果

Summary

Summary

Callgraph

Callgraph