首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

Xdebug 程式碼分析指南:安裝、啟動、KCacheGrind 視覺化與常用設定

     編輯:PHP 相關知識

Xdebug 程式碼分析指南:安裝、啟動、KCacheGrind 視覺化與常用設定

Xdebug 內建 Profiler 能協助找出 PHP 腳本效能瓶頸,輸出相容 CacheGrind 格式,搭配 KCacheGrind(Linux/KDE)、QCacheGrind(Windows/Mac)或 WinCacheGrind 進行視覺化分析。

啟動分析器

在 php.ini 設定:

xdebug.profiler_enable = 1
xdebug.profiler_output_dir = "/tmp/xdebug_profiler"
xdebug.profiler_output_name = "cachegrind.out.%p"

或使用觸發模式(不影響所有請求):

xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
# 瀏覽器加上 ?XDEBUG_PROFILE=1 即可觸發

KCacheGrind 介面解讀

  • Flat Profile:函數依耗時排序,Self 欄為該函數本身耗時(不含子函數),Called 為呼叫次數
  • Caller / Callee:上下層呼叫關係,Cost 顯示在該呼叫鏈路中佔比
  • All Callers / All Calls:包含間接呼叫的完整調用鏈,Distance 顯示呼叫層級差異

內建函數會加 php:: 前綴(如 php::mysql_query),include 檔案顯示為 include::/path/to/file。

常用設定說明

設定型別預設說明
xdebug.profiler_appendinteger01 = 同名檔案附加不覆蓋
xdebug.profiler_enableinteger0全域啟動,不可用 ini_set() 修改
xdebug.profiler_enable_triggerinteger0透過 GET/POST/COOKIE 觸發
xdebug.profiler_enable_trigger_valuestring""觸發密碼,防止濫用
xdebug.profiler_output_dirstring/tmp輸出目錄,需寫入權限
xdebug.profiler_output_namestringcachegrind.out.%p檔名格式,支援 %p(pid)、%r、%u 等

實用函數

xdebug_get_profiler_filename() // 回傳目前分析檔案完整路徑

注意事項

  • 分析檔案極大(複雜應用可達 500MB+),確保磁碟空間充足
  • 生產環境建議僅啟用觸發模式,避免效能衝擊
  • WinCacheGrind 目前不支援壓縮檔案

善用 Xdebug Profiler 能快速定位慢查詢、重複計算、遞歸過深等效能殺手。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved