iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 24
0
自我挑戰組

花式PHP系列 第 25

PHP:Xdebug搭配Kcachegrind做效能分析

  • 分享至 

  • xImage
  •  

大家新年快樂!
/images/emoticon/emoticon57.gif

為什麼我需要它們?

一般狀況下我們使用 debugbar 就綽綽有餘了。
但有時候有些狀況(比如說執行超時)即使絞盡腦汁也都無法想出是哪裡出了問題,
在有用框架的時候這種問題更為深刻,
因為框架的教學文件也只會跟你說 api 的呼叫方式,絕不會告訴你這些程式背後又做了多少事情。
換句話說,有時候我們根本無從查起程式中的效能瓶頸出現在哪!

但還好有個工具可以幫我們紀錄執行過程完整的 callstack。
它就是大名鼎鼎的「xdebug」

在安裝好 xdebug 之後,我們會在打開 xdebug profiler 紀錄完整的 callstack,
並用 kcachegrind 分析它!

安裝 kcachegrind

sudo apt-get update
sudo apt-get install kcachegrind

打開 xdebug profiler

去 php 的套件資料夾找到 xdebug.ini,
(比如說我的環境是 /etc/php/7.1/mods-available/xdebug.ini)
並加入下面這幾行

xdebug.profiler_enable = 1
xdebug.profiler_output_name = xdebug.out.%t
xdebug.profiler_output_dir = /home/[使用者名稱]/[某個資料夾你自己挑]

注意!

要注意的是,當打開這個 profiler 的時候,
因為要紀錄的關係,執行會變得異常緩慢,這是正常的!
你也要確保沒有人同時也在打開 profiler 的主機上執行程式,不然會很難確定你的那一份在哪!

用 kcachegrind 打開紀錄

大家就會得到像是底下這樣的圖片,就可以分析瓶頸在哪拉~

https://ithelp.ithome.com.tw/upload/images/20171231/20106636XL6i0fEaaE.png

之前有遇過遇上效能問題,卻百思不得其解瓶頸在哪的狀況,
藉由這個工具就能辨識出哪個地方耗時最久了~
有時候真的覺得,阿~有工具真好ㄋ!

參考


上一篇
PHP:升級7.0前的語法檢查
下一篇
PHP SPL:概要
系列文
花式PHP31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言