php5.3 XHProf效能測試

來源:互聯網
上載者:User
{Xhprof}

XhProf是一個分層PHP效能分析工具,可它報告函數層級的請求次數和各種指標,包括阻塞時間,CPU時間和記憶體使用量情況。

[情況]

  • 以 上兩個應用Apache+php組合在Windows上是比較常見,一般用來組織開發環境,或者調試環境,或者測試環境,當然也有不少是用於生產環境的, 對於我而言,我是用他們來進行開發的,由於比較習慣了在Windows下面開發,儘管自己也搭建了基於Linux虛擬機器的開發平台,用著也還可以,但總是 無法舍離Windows下的環境。

  • 我 一直是eclipse+xdebug的方式開發調試,沒有遇到太多的問題,開發也比較的順利,不過昨天在測試一個頁面的時候,發現php出現了一種類似鎖 死的現象,即執行該頁面後,php-cgi一直掛在進程裡,既沒有cpu消耗,也沒有記憶體級數增長,僅僅是停留著不動,網頁也不產生,百思不得其解,而且 仔細檢查和調試代碼也沒有發現明顯的瓶頸,另外我是在自己的6核電腦上測試的,檔案系統也是正常的,鎖死就變成了很奇怪的事情。我自己使用的是 Apache_1.3.37-Win32+php-5.2.6-Win32+Xdebug-2.1.2版本調試的,發現在調試過程中,整個eclipse 都處於無響應的狀態,似乎這種鎖死有傳導性,故調試一直無法進行,由於寫了比較多的代碼,有點累,沒有去想是什麼具體原因,暫且休息一會。

  • 在搜尋的時候無意中發現了Xhprof工具,看了一些博主的文章,發現這個工具可以剖析器效能,值可能有一些粗略,是基於函數的,但卻是很直觀和清晰的,非常感興趣,所以掛起了剛才的開發,研究下這個東西。

[過程]

  • 由 於參考了好幾個博文,而且都是基於Linux版本的介紹,沒有找到一個基於Windows的介紹,總不能一下子就切換到Linux下面去開發吧?所以又搜 索,發現一個外文網站提供了一個編譯好的Xhprof,不過版本是基於php-5.3.3-Win32版本的,代碼是基於Xhprof的0.9.2版本 的,呵呵,看來有人和我想到一塊兒了,不過搜尋的結果非常少,中文的幾乎幾乎沒有,外文的也就只有鳳毛麟角的幾個結果而已。

  • 從 該外文網站下載了xhprof for windows版本,又從facebook原始發布站下載了相關的xhprof代碼和相關的產生頁面文檔,由於xhprof是基於php5.3.3編譯 的,還需要準備php5.3.3,直接去php.net去拉一個vc6安全執行緒版本下來。

  • Apache有現成的,所以直接修改了原來的http.conf,把php5.3.3以cgi方式引入apache中,調試了一下,順利的整合,phpinfo一切正常,xdebug也是一切正常的,現在開始加入xhprof的準備工作都做好了。

  • 直接把xhprof for windows版本安置好,然後在要測試的頁面裡面加入調試頁面和代碼,就可以啦。

[步驟]

  • 先要下載xhprof for windows版本,這個沒得說,地址:http://www.benjamin-carl.de/?download=XHProf-0.10.0-PHP-5.3.3-VC6-x86-TS,http://pan.baidu.com/share/link?shareid=239782&uk=337775431下載的zip檔案解壓縮後是一個dll檔案,直接放到php的ext目錄裡面就可以了,1所示:

圖1

  • 然 後要把xhprof的兩個包含了調試輸出頁面的子目錄安置好,這裡我選擇了直接安置在自己網站發布位置的根目錄裡,也就是apache預設的htdocs 的目錄裡面,我這裡的htdocs是轉移到另外一個開發隨身碟上的,方便在不同的地方編製代碼,2所示,這裡圖示了一共3個檔案夾,分別是 xhprof_html、xhprof_lib、xprof_log,其中xhprof_html和xhprof_lib是從下載的xhprof原始碼文 件包裡得到的,包所在網站:http://pecl.php.net/package/xhprof,xhprof下載地址:http://pecl.php.net/get/xhprof-0.9.2.tgz,然後自行在htdocs裡建立xprof_log檔案夾,這個檔案夾是用來存放頁面分析資料的。


圖2

  • 由於我的Apache+php已經完全調試好,所以要處理的只有php.ini檔案,開啟辦法很簡單,在該檔案的末尾加上如下代碼即可:

[xhprof]
extension=php_xhprof.dll
; directory used by default implementation of the iXHProfRuns
; interface (namely, the XHProfRuns_Default class) for storing
; XHProf runs.
xhprof.output_dir="M:/htdocs/xhprof_log"

“提示:xhprof.output_dir=這個使用於設定效能分析資料存放位置的,我這裡應為htdocs在M盤,故設定為M:/htdocs/xhprof_log,也就是上述的目錄位置”

  • 添加成功後,可以重啟Apache看看phpinfo()資訊中是否包含了xhprof的段,有的話,那就安裝成功了,提示:以cgi方式啟動並執行php修改了php.ini以後,可以直接運行phpinfo()查看結果,而無須重新啟動Apache。結果的話3所示:

圖3

  • 好了,至此為止,xhprof已經正確的安裝好了。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.