xhprof是facebook開源出來的一個php性能測試工具,也可以稱之為profile工具,這個詞不知道怎麼翻譯才比較達意。跟之前一直使用的xdebug相比,有很多類似之處。以前對xdebug有一些記錄還可以供參考,但是它的缺點是對性能影響太大,即便是開啟了profiler_enable_trigger參數,用在生產環境中也是慘不忍睹,cpu立刻就飆到high。
而 xhprof 就顯得很輕量,是否記錄 profile 可以由程序控制,因此,用在生產環境中也就成為一種可能。在它的文檔上可以看到這樣一種用法:
以萬分之一的幾率啟用 xhprof,平時悄悄的不打槍。
PHP:
-
if (mt_rand(1, 10000) == 1) {
-
xhprof_enable(XHPROF_FLAGS_MEMORY);
-
$xhprof_on = true;
-
}
在程序結尾處調用方法保存profile
PHP:
-
if ($xhprof_on) {
-
// stop profiler
-
$xhprof_data = xhprof_disable();
-
// save $xhprof_data somewhere (say a central DB)
-
...
-
}
也可以用register_shutdown_function方法指定在程序結束時保存xhprof信息,這樣就免去了結尾處判斷,給個改寫的不完整例子:
PHP:
-
if (mt_rand(1, 10000) == 1) {
-
xhprof_enable(XHPROF_FLAGS_MEMORY);
-
register_shutdown_function(create_funcion('', "$xhprof_data = xhprof_disable(); save $xhprof_data;"));
-
}
至於日誌,我暫時用的是最土的文件形式保存,定期清除即可。
BTW:xhprof 生成的圖形方式 profile 真是酷斃了,哪段代碼成為瓶頸,一目瞭然。
作者: Volcano 發表於August 5, 2009 at 10:01 pm
版權信息: 可以任意轉載, 轉載時請務必以超鏈接形式標明文章原始出處和作者信息及此聲明
永久鏈接 - http://www.ooso.net/archives/522