xdebug 2.0 正式版釋出後,成為 PHP 效能調優利器。本文分享三個實戰技巧,幫助你在 Windows 環境高效分析效能瓶頸。
xdebug 產出的 cachegrind.out.xxx 需配合視覺化工具分析。Linux 常用 KCacheGrind,Windows 推薦免費開源 WinCacheGrind(SourceForge 可下載)。功能足夠應付日常分析,偶爾不穩定可重啟工具解決。
預設 xdebug.profiler_enable = 1 會記錄所有請求,嚴重影響效能。改用觸發模式:
; php.ini / xdebug.ini 設定
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
只有當請求攜帶 XDEBUG_PROFILE 參數(GET/POST/COOKIE)時才啟動分析:
# 瀏覽器網址列加上參數
https://example.com/page.php?XDEBUG_PROFILE=1
# 或使用 curl
curl "https://example.com/page.php?XDEBUG_PROFILE=1"
記得修改後重啟 Apache 生效。
需觀察多個請求的累積效能時,啟用聚合模式:
xdebug.profiler_aggregate = 1
所有請求的資料將寫入同一個 profile 檔案,方便整體觀察熱點函數。
實測最新版 xdebug 與 APC (Alternative PHP Cache) 同時啟用無相容性問題,可安心在生產環境開啟 APC 加速並按需觸發 xdebug 分析。
| 設定項 | 建議值 | 說明 |
|---|---|---|
| xdebug.profiler_enable | 0 | 關閉全域自動記錄 |
| xdebug.profiler_enable_trigger | 1 | 啟用觸發模式 |
| xdebug.profiler_aggregate | 1 | 合併多請求(視需求) |
| xdebug.profiler_output_dir | /tmp/xdebug | 確保可寫入目錄 |
善用這三招,即可在不影響線上效能的前提下,精準定位 PHP 效能瓶頸。