原文鏈接:http://blog.snsgou.com/post-816.html
1、下載XHProf
到這裡 http://dev.freshsite.pl/php-extensions/xhprof.html 下載Windows版本的XHProf,我這裡選擇下載
XHProf 0.10.3 for PHP 5.3 vc9 和 xhprof_html
2、安裝XHProf
把壓縮包裡的 xhprof_0.10.3_php53_vc9.dll 拷貝到PHP的ext目錄下,然後在php.ini配置裡面加入配置(不要忘記創建對應的文件夾)
[xhprof] extension=xhprof_0.10.3_php53_vc9.dll ; directory used by default implementation of the iXHProfRuns ; interface (namely, the XHProfRuns_Default class) for storing ; XHProf runs. xhprof.output_dir="d:/PHP/xhprof/log"
3、使用XHProf
將 xhprof_html.zip 解壓到你想測試的網站根目錄,如我放在了網站目錄的 /public/xhprof/windows 下。
測試文件:
<?php
function bar($x)
{
if ($x > 0)
{
bar($x - 1);
}
}
function foo()
{
for ($idx = 0; $idx < 5; $idx++)
{
bar($idx);
$x = strlen("abc");
}
}
// 啟動xhprof
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
// 調用foo函數,也是我們要分析的函數
foo();
// 停止xhprof
$xhprof_data = xhprof_disable();
// 取得統計數據
//print_r($xhprof_data);
$os = 'windows';
$XHPROF_ROOT = dirname(__FILE__) . '/public/xhprof/' . $os;
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
// 保存統計數據,生成統計ID和source名稱
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_foo"); // source名稱是xhprof_foo
// 查看統計信息
echo "<div style='margin: 50px auto; padding :10px; width: 92px; font-size: 16px; background: #ff0000;'><a style='color:#ffff00;' href='/public/xhprof/" . $os . "/xhprof_html/index.php?run=" . $run_id . "&source=xhprof_foo' target='_blank'>XHProf view</a></div>";
當點擊鏈接“[View Full Callgraph]”時,會報錯:
failed to execute cmd: " dot -Tpng"
所以還需要下載圖形工具 Graphviz。
4、下載Graphviz
到這裡 http://www.graphviz.org/Download_windows.php 下載Windows版本的Graphviz,我這裡選擇下載
graphviz-2.38.zip
5、安裝Graphviz
解壓後,把Graphviz拷貝到某個目錄,如 d:/PHP/xhprof/graphviz-2.38/
6、配置Graphviz
找到上述提到網站目錄 /public/xhprof/windows/ 下的 config.php 文件,調整如下:
<?php
/**
* Set the absolute paths on your system
*/
define('ERROR_FILE', 'd:/PHP/xhprof/log/xhprof_dot_errfile.log');
define('TMP_DIRECTORY', 'd:/PHP/xhprof/tmp');
define('DOT_BINARY', 'd:/PHP/xhprof/graphviz-2.38/release/bin/dot.exe');
重新點擊鏈接 [View Full Callgraph],一張期待已久的效果圖出來啦:
