《現代 PHP》學習筆記(廿三):剖析

前言

本文為《現代 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
2
3
xdebug.profiler_enable=0
xdebug.profiler_enable_trigger=1
xdebug.profiler_output_dir=/path/to/profiler/results
  • 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