2012-07-26 65 views
0

我們有一個用PHP + js + mysql編寫的大型應用程序。我們的一些老闆決定(由於他們不是開發人員而犯了一個大錯誤),讓這個應用程序外包給開發者公司重寫。他們用Zend Framework + Doctrine重寫了應用程序,如果在模塊上的舊應用程序加載1秒鐘,現在需要4秒鐘,那麼我們會返回非常慢的應用程序。直到現在,我們已經完成了不可能的任務:激活緩存服務器,將應用程序遷移到Linux,緩存所有可能的內容,但它仍然非常緩慢。優化zend框架+ Doctrine2 web應用程序

我需要所有開發人員的經驗,如何優化和使用zend框架和doctrin2編寫的應用程序更快(我們無法刪除原則,並且我們已經實現了緩存系統)?提示技巧,想法任何anwser將受到歡迎。

+0

聽起來像你將需要通過代碼,看看他們做了什麼。如果你啓用了APC,ZendFramework和Doctrine沒有理由需要花費4秒的時間來加載(除非數據庫查詢寫得不好)。有各種各樣的事情他們可能做錯了。 – tubaguy50035 2012-07-26 13:49:14

+0

當我們將web應用程序從windows服務器移動到linux centos服務器時,我們看到了一些加速問題,我們已經看到一些使用getSql和getDql命令的教條的查詢,並且有一些mostrouses查詢有很多連接和別名,但是真的知道這些查詢是否是從doctrine – albanx 2012-07-26 14:20:40

+0

自動生成的。您將要按照其中一個答案中的建議啓用慢速查詢日誌。並分析這些查詢,看看他們正在採取多少時間。 – tubaguy50035 2012-07-26 14:23:56

回答

1

同任何PHP應用程序:

  • 開發計算機上啓用Xdebug的,並做了一些分析,看看那裏的瓶頸是
  • 啓用MySQL慢查詢日誌,看看是否查詢可以提高

你也可以看看在Zend_Db數據庫分析功能,看是否應用程序是做不必要的查詢或加載更多的數據比實際需要。

1

對於所有的網站應用程序使用這個螢火蟲的插件來優化你的代碼,你可以真正贏得性能!

Yahoo Yslow pluggin

Google PageSpeed pluggin

與在那裏,你有一個符號爲您的網頁,以上市爲提高速度最快的應用。

之後,對於Doctrine2,您可以使用fetchArray()進行少量請求(全局用戶使用fetchAll())。 FetchArray比fetchAll對於請求更快,只是因爲fetchArray只返回一個Array,而fetchAll則返回請求中鏈接的所有對象......(很多時候,數組已足夠)。

希望我幫助你。

+0

我們已經做了統計,並與螢火蟲和Yslow,緩存,優化查詢教條dql時,我們可以但應用程序的結果仍然緩慢 – albanx 2012-07-26 10:20:21

+0

好吧,你有比較時間請求在Doctrine和Mysql?有不同的?或時間是相似的?當你顯示你的頁面沒有mysql(或dql)處理?顯示頁面更快?或者它也很慢? – 2012-07-26 10:27:10

+0

+1爲fetchArray,但fetchAll命令在教條中有一點使用,我們注意到,在使用getResult命令時,我們注意到,正如你所說的那樣,返回所有鏈接的對象。 (做一個getResult的var_dump給出了一個moustrous輸出。)考慮我們的數據庫中有170個表,並且我們爲每個客戶有一個這種類型的數據庫 – albanx 2012-07-26 14:35:40