Azure網站上的PHP — XDebug

目前,Microsoft Azure網站不支持遠程調試PHP站點。但是,您仍然可以使用XDebug擴展模塊排錯PHP網站問題。Xdebug是一個開源PHP程序調試器,可以用來跟蹤,調試和分析PHP程序的運行狀況。

下面具體介紹如何使用XDebug的性能分析功能查找PHP網站的性能瓶頸。在
Azure網站上的PHP — 配置PHP擴展模塊中介紹瞭如何配置XDebug PHP擴展模塊。

要啓用XDebug的Profiling功能,需要創建一個包含如下內容用的.user.ini文件,並通過FTP上傳到/site/wwwroot目錄下。

zend_extension = "d:\home\site\wwwroot\bin\php_xdebug-2.2.4-5.5-vc11-nts.dll"
xdebug.profiler_enable=1
xdebug.profiler_output_dir="D:\home\LogFiles"

啓用後,如下圖所示,在/LogFiles目錄下會生成cachegrind.out文件。


 我們需要使用WinCacheGrind工具分析XDebug的性能文件,WinCacheGrind工具可以從SourceForge網站下載。

如下圖所示,我們可以非常直觀的看到SlowFunction使用了74秒多的時間。


 雙擊SlowFunction,可以看到下圖所示的具體信息。SlowFunction被調用了mySleep10次,每次花費5~10秒。


 按需啓動XDebug Profiler

在前面的例子中,使用了xdebug.profiler_enabled=1來啓用XDebug的profiler功能。該設置應用到整個網站所有的PHP頁面,會導致整個網站的性能進一步變慢,在生產環境中可能會導致嚴重的客戶體驗問題。
我們可以使用觸發器來啓用xdebug的profiler功能。當xdebug.profiler_enable_trigger被設置爲1,正常的頁面訪問不受影響。您需要通過使用XDEBUG_PROFILE的GET/ POST參數,或者設置一個名爲XDEBUG_PROFILE的一個cookie來觸發xdebug的profiler功能。通常,使用xdebug_enable_trigger的時候,我們需要設置xdebug.profiler_enable爲0。如果您需要通過觸發器來啓用xdebug的profiler功能,您需要在網站的根目錄下創建一個.user.ini文件包含下面的內容。

zend_extension = ".\bin\php_xdebug-2.2.3-5.5-vc11-nts-x86_64.dll"
xdebug.profiler_enable=0
xdebug.profiler_output_dir="D:\home\Logfiles"
xdebug.profiler_enable_trigger=1

使用改配置,正常的PHP網頁訪問不受影響。如果您希望打開profiler的功能,在訪問頁面的時候需要加入?XDEBUG_PROFILE=1來觸發profiler功能。比如,此時您可以通過訪問HTTP://mysite.azurewebsites.net/slow.php?XDEBUG_PROFILE=1來啓用xdebug的pfofiler功能。如果您需要POST請求來重現問題,您可以使用Fillder等工具來構建HTTP請求,或者您可以使用xdebug的瀏覽器擴展。

發佈了33 篇原創文章 · 獲贊 0 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章