通常啓用了xdebug插件,性能測試輸出文件會伴隨生成,通常是以cachegrind.out.xxxx 文件存在。
該文件可以通過第三方工具來進行代碼性能分析。
但如果本地有多個項目/網站,所有的profile 都輸出到一個文件中了,這樣並不方便後面進行性能分析。
自定義profile 文件名稱
可以通過配置xdebug.profiler_output_name 參數來設置輸出文件名稱,部分參數如下:
| 符號 | 含義 | 配置樣例 | 樣例文件名 |
|---|---|---|---|
| %c | 當前工作目錄的crc32校驗值 | cachegrind.out.%c | cachegrind.out.1258863198 |
| %p | 當前服務器進程的pid | cachegrind.out.%p | cachegrind.out.9685 |
| %r | 隨機數 | cachegrind.out.%r | cachegrind.out.072db0 |
| %s | 腳本文件名(注) | cachegrind.out.%s | cachegrind.out._home_httpd_html_test_xdebug_test_php |
| %t | Unix時間戳(秒) | cachegrind.out.%t | cachegrind.out.1179434742 |
| %u | Unix時間戳(微秒) | cachegrind.out.%u | cachegrind.out.1179434749_642382 |
| %H | $_SERVER['HTTP_HOST'] | cachegrind.out.%H | cachegrind.out.localhost |
| %R | $_SERVER['REQUEST_URI'] | cachegrind.out.%R | cachegrind.out._test_xdebug_test_php_var=1_var2 |
| %S | session_id (來自$_COOKIE 如果設置了的話) | cachegrind.out.%S | cachegrind.out.c70c1ec2375af58f74b390bbdd2a679d |
| %% | %字符 | cachegrind.out.%% | cachegrind.out.%% |
編輯php.ini 配置文件:
xdebug.profiler_output_name = cachegrind.out.%H
然後重啓 php server。
在Mac 下,profile 文件存放於/var/tmp/目錄中。
性能分析
在Mac 下,有MacCallGrind 和 qcachegrind 可以使用,不過前者是收費,直接通過Apple Store下載,後者是免費。需要手動安裝。
安裝graphviz,用來Call Graph功能:
$ brew install graphviz
安裝 qcachegrind:
$ brew install qcachegrind
安裝完成之後,就可以打開 qcachegrind 應用了,圖形界面如下:
其他
不過需要注意,開啓了profile文件輸出之後,如果本地項目多的話,很容易佔用磁盤大面積空間,下圖是我半年左右沒有清理的狀態:
可以使用命令進行清理:
$ sudo rm -fr /private/var/tmp/cachegrind.out.*
參考鏈接
- 使用xdebug對php進行profile的輸出
- php+xdebug+qcachegrind(mac)性能分析