在生產環境中使用php性能測試工具xhprof

xhprof是facebook開源出來的一個php性能測試工具,也可以稱之為profile工具,這個詞不知道怎麼翻譯才比較達意。跟之前一直使用的xdebug相比,有很多類似之處。以前對xdebug有一些記錄還可以供參考,但是它的缺點是對性能影響太大,即便是開啟了profiler_enable_trigger參數,用在生產環境中也是慘不忍睹,cpu立刻就飆到high。


xhprof 就顯得很輕量,是否記錄 profile 可以由程序控制,因此,用在生產環境中也就成為一種可能。在它的文檔上可以看到這樣一種用法:
以萬分之一的幾率啟用 xhprof,平時悄悄的不打槍。


PHP:


  1. if (mt_rand(1, 10000) == 1) {


  2. xhprof_enable(XHPROF_FLAGS_MEMORY);


  3. $xhprof_on = true;


  4. }

在程序結尾處調用方法保存profile


PHP:


  1. if ($xhprof_on) {


  2. // stop profiler


  3. $xhprof_data = xhprof_disable();


  4. // save $xhprof_data somewhere (say a central DB)


  5. ...


  6. }

也可以用register_shutdown_function方法指定在程序結束時保存xhprof信息,這樣就免去了結尾處判斷,給個改寫的不完整例子:


PHP:


  1. if (mt_rand(1, 10000) == 1) {


  2. xhprof_enable(XHPROF_FLAGS_MEMORY);


  3. register_shutdown_function(create_funcion('', "$xhprof_data = xhprof_disable(); save $xhprof_data;"));


  4. }

至於日誌,我暫時用的是最土的文件形式保存,定期清除即可。

BTW:xhprof 生成的圖形方式 profile 真是酷斃了,哪段代碼成為瓶頸,一目瞭然。

作者: Volcano
發表於August 5, 2009 at 10:01 pm

版權信息
: 可以任意轉載, 轉載時請務必以超鏈接形式標明文章原始出處作者信息及此聲明

永久鏈接 - http://www.ooso.net/archives/522

留言

這個網誌中的熱門文章

用PHP寄MAIL的方法

ImageMagick應用大全(一)

php安裝openssl的方法