在上兩期中我已經對 xdebug 最核心的操做已經進行了講解。相信你能夠擺脫寫 var_dump($data);die; 的編寫和完成調試後的清除了。這一期咱們來學習xdebug的第二個特點-性能分析。這一個功能,在實操中用的不是不少。php
使用場景:nginx
xdebug 是經過訪問指定方法。生成性能分析文件,再經過分析軟件進行查看性能結果。segmentfault
php.ini 添加配置windows
xdebug.profiler_enable=Off xdebug.profiler_enable_trigger=On xdebug.profiler_enable_trigger_value="create" xdebug.profiler_output_dir="/tmp/" xdebug.profiler_output_name="cachegrind.out.%R"
比較建議一個方法訪問完後,生成分析文件,立刻進行性能分析,分析完後再清除文件。爲了數據準確性,咱們還須要進行屢次對比。找性能參數的平均值來提升準確性。centos
咱們得知道那個依賴方法耗時最久,是什麼緣由。有沒有優化的可能。併發
咱們經過 tool -> Analyze Xdebug profiler Snapshot 打開性能分析文件 cachegrind.out. 打頭的文件。就會進入如下界面
phpstorm
一、瞭解各個選項的意思函數
time 列裏有 數字和百分比。分別表明 執行時間和執行佔用總時間百分比高併發
單位是 server 旁邊的 time 那裏進行設置.默認是 ms工具
這個可讓咱們查看他的上一步執行了以什麼操做。這個能夠方便咱們在瞭解調用到這個函數的過程。
二、找到咱們關心的數據
咱們能夠在 Execution statistics 標籤裏對 own time 進行排序取執行佔用最多的內容。裏面會包含文件和函數以及方法。若是咱們設置了 server 關聯當前的項目,統計裏的方法是能夠進行跳轉到項目的實際代碼裏。
咱們經過 Callees 標籤查看函數裏那些方法調用耗時最多
Execution statistics 標籤裏對 calls 進行排序取執行次數最多的函數或方法。
可經過下面的 Callers 查看那些地方對他進行了調用
若是你的項目不是多入口的類型,你保存的到一個文件就會出現性能分析文件不精確的狀況。而我在上文中用的是 $_SERVER['REQUEST_URI'] 做爲文件後綴。能夠很好的區分性能分析文件。