前言
本文為《現代 PHP》一書的學習筆記。
環境
- Windows 10
- Wnmp 3.1.0
剖析
剖析是分析應用程式的一種方式,用來找到效能的瓶頸。
標竿工具
使用標竿工具(如 Apache Bench)可以用來偵測效能問題,在外部測試應用程式,如同使用者用瀏覽器使用一般。
它會告訴開發者應用程式每秒鐘可以負荷的請求總數,如果每秒只能負荷少量的請求,那可能就需要使用到剖析器。
剖析器
剖析器有兩種類型,一種是用於開發階段,另一種是用於產品階段。
Xdebug 是熱門的 PHP 剖析器,但它只被使用在開發階段,並且會消耗許多的系統資源來分析應用程式。而 KCacheGrind 和 WinCacheGrind 是兩套很好的視覺化 Xdebug 剖析器結果的應用程式。
XHProf 是由 Facebook 所撰寫的熱門 PHP 剖析器,在開發階段和產品階段都可以被使用,而 XHGUI 是用來視覺化和比較 XHProf 剖析器的結果。
Xdebug
Xdebug 作為最熱門的 PHP 剖析器之一,能幫助開發者找到效能瓶頸。
設定
在 php.ini
檔中,可以對 Xdebug 進行設定。
1 | xdebug.profiler_enable=0 |
xdebug.profiler_enable
設為 0,會告知 Xdebug 不要每一個請求都自動執行。xdebug.profiler_enable_trigger
設為 1,會告知 Xdebug 在需要時執行。在 PHP 應用程式 URL 之中加上XDEBUG_PROFILE=1
參數,會使得每個請求都啟動 Xdebug。xdebug.profiler_output_dir
包含剖析器產出結果的料夾路徑,這個報表可能很大(例如 500 MB 以上)。
觸發
HTTP 請求 URL 的實際例子,例如 /users/show/1?XDEBUG_PROFILE=1
,剖析器所產出的結果會被輸出到指定的料夾內。
分析
Xdebug 剖析器所產生的結果是 CacheGrind
格式,以下應用程式可以用來檢閱此種檔案:
- Windows 系統的 WinCacheGrind
- Linux 系統的 KCacheGrind
- 瀏覽器的 WebGrind