Xdebug 性能分析生成的 cachegrind.out.* 文件名可通過 xdebug.profiler_output_name 靈活配置。合理命名對多項目、多接口分析至關重要。
xdebug.profiler_output_name = cachegrind.out.%p
僅包含進程 PID(如 cachegrind.out.1408),導致:
| 符號 | 含義 | 配置示例 | 生成文件名示例 |
|---|---|---|---|
| %c | 當前工作目錄 CRC32 | trace.%c | trace.1258863198.xt |
| %p | 進程 PID | trace.%p | trace.5174.xt |
| %r | 隨機數 | trace.%r | trace.072db0.xt |
| %s | 腳本文件名 | cachegrind.out.%s | cachegrind.out._home_httpd_html_test_php |
| %t | Unix 時間戳(秒) | trace.%t | trace.1179434742.xt |
| %u | Unix 時間戳(微秒) | trace.%u | trace.1179434749_642382.xt |
| %H | $_SERVER['HTTP_HOST'] | trace.%H | trace.kossu.xt |
| %R | $_SERVER['REQUEST_URI'] | trace.%R | trace._test_xdebug_test_php_var=1_var2=2.xt |
| %S | Session ID | trace.%S | trace.c70c1ec2375af58f74b390bbdd2a679d.xt |
| %% | % 字符 | trace.%% | trace.%.xt |
註:%s 不適用於 trace 文件名,僅用於 profiler。
xdebug.profiler_output_name = cachegrind.out.%s
生成:cachegrind.out._var_www_html_index_php,每個 PHP 文件獨立分析文件。
xdebug.profiler_output_name = cachegrind.out.%H_%R_%u
生成:cachegrind.out.api.example.com_/v1_user_login_1699900000_123456,完美區分站點、接口、請求時間。
xdebug.profiler_output_name = cachegrind.out.%S_%t
適合分析特定用戶操作流程的性能特徵。
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 1
; 僅當請求攜帶 XDEBUG_PROFILE 參數時生成
; curl "https://example.com/api?XDEBUG_PROFILE=1"
xdebug.profiler_output_dir = /var/log/xdebug/profilerfind /var/log/xdebug/profiler -mtime +7 -delete
3. 分析工具:KCacheGrind (Linux)、QCacheGrind (跨平台)、PhpStorm 內置、VS Code PHP Debug 擴展
4. 生產環境慎用 profiler_enable=1,必須用觸發器 + IP 白名單
科學的文件命名策略,讓性能分析從「大海撈針」變為「精準定位」。