2008-09-25 88 views
33

我想找到一種方法來確定PHP中的每個函數以及PHP中的每個文件運行的時間。我有一箇舊的遺留PHP應用程序,我試圖找到「粗略的地方」,所以我想定位哪些例程和頁面需要很長時間來客觀加載。分析PHP代碼

是否有任何預製工具允許此操作,或者我堅持使用microtime,並構建自己的分析框架?

+1

的[剖析PHP腳本最簡單的方法]可能重複( http://stackoverflow.com/questions/21133/simplest-way-to-profile-a-php-script) – 2012-03-21 16:10:24

回答

42

我上週實際上做了一些優化工作。 XDebug的確是要走的路。

只啓用它作爲一個擴展(由於某種原因,它不會用我的Windows機器上ze_extension工作),設置您與xdebug.profiler_enable_trigger的php.ini =上,並與XDEBUG_PROFILE = 1作爲調用您的正常網址獲取或發佈變量來描述該請求。沒有什麼比這更簡單!

此外,我真的可以推薦webgrind,一個基於Web的(PHP)谷歌夏季代碼項目,可以讀取和解析您的調試輸出文件!

+0

Windows機器上的webgrind的替代品:Wincachegrind(一款桌面應用程序)。 – 2011-08-18 07:11:55

6

看看xdebug,它允許深入剖析。和here's an explanation的如何使用xdebug。

Xdebug的的Profiler是一個功能強大的工具 ,讓你分析 你的PHP代碼,並確定 瓶頸或通常看到哪些 部分代碼的很慢,可以 使用速度提升的能力。 中的分析器Xdebug 2以兼容cachegrind的 文件的形式輸出分析信息 。

榮譽給SchizoDuckiementioningWebgrind。這是我聽到的第一個。非常有用(+1)。

否則,您可以在Linux或其較小衍生產品wincachegrind上使用kcachegrind。這兩款應用程序都會讀取xdebug的分析器輸出文件並對其進行彙總以供您欣賞。

1

如果您安裝了xdebug擴展,您可以將其設置爲導出運行配置文件,您可以在WinCacheGrind(在Windows上)中讀取它。我不記得在Linux上讀取文件的應用程序的名稱。

3

我曾經看過一個屏幕投影Zend Core。看起來不錯,但它實際上是花錢,我不知道這對你是否是個問題。

2

xdebug的分析功能相當不錯。如果你用valgrind格式保存輸出,你可以使用KCachegrind或Wincachegrind來查看調用圖,如果你是一個可視化類型的人,可以更容易地解決發生的事情。

3

XDebug很不錯,但它不那麼容易使用或設置國際海事組織。

內置於Zend Studio中的分析器非常易於使用。您只需點擊瀏覽器工具欄上的按鈕,即可獲得您的代碼配置文件。或許不像CacheGrind轉儲那麼深奧,但它對我來說總是夠用的。

你確實需要安裝Zend平臺,但是這對於開發使用來說是直接和免費的 - 儘管如此,你仍然需要爲Zend Studio許可證付費。

+3

三年半了,我現在不同意自己。 Facebook已經開源了一個名爲XHProf的分析工具,它非常好,很輕便,並且足夠容易安裝和運行 – 2012-02-28 15:48:09

0

最簡單的解決方案是使用Zend Profiler,您不需要使用Zend Platform,您可以直接從瀏覽器運行它,它非常準確,並且具有您需要的最多功能,並且集成在Zend Studio中

2

除了擁有嚴重強大的實時調試功能,來自NuSphere(www.nusphere.com)的PhpED還有一個內置的分析器,可以在IDE內單擊一下運行。

7

這是一個不錯的提示。

當您使用了XDebug配置PHP,成立了profiler_trigger和使用的書籤觸發了XDebug探查;)

javascript:if(document.URL.indexOf('XDEBUG_PROFILE')<1){var%20sep=document.URL.indexOf('?');sep%20=%20(sep<1)?'?':'&';window.location.href=document.URL+sep+'XDEBUG_PROFILE';}