2012-11-29 35 views
2

緩慢加載我發現我的CakePHP應用程序中不調用數據庫的頁面大約需要4秒才能加載,這太慢了。CakePHP頁面由於php :: session_start

我嘗試下面的事情無濟於事:

  • 重新啓動計算機
  • 重新安裝UNISERVER
  • 切換2調試級別爲0
  • 從FileCache
切換到APC緩存

我得到了一個XDebug分析器轉儲,並在KCachegrind中觀察到最耗時的函數是ph p :: session_start,它被\ webroot \ index.php調用。我還使用CakePHP Debug Kit檢查了性能,發現最耗時的項目是「Core Processing(派生自$ _SERVER [」REQUEST_TIME「])」。

我能做些什麼來使我的頁面加載更快?

如果我的硬件是相關的,我所描述的以下運行環境:

  • 的ThinkPad T400
  • 英特爾Core 2 Duo處理器
  • OCZ SSD
  • 4 GB RAM
  • 的Windows 7 64位版
  • CakePHP版本2.2.3

作爲一個起點,我比較了由UNISERVER提供php.ini文件的生產版本的php.ini的我的工作拷貝,發現以下主要區別:

  • PHP錯誤級別(E_ALL,E_NOTICE,E_STRICT等)
  • $ php_errormsg中記錄
  • mysqlnd.collect設置(這2)
  • 禁用Xdebug的

然後,我在比較之前和之後做了一些。綠色細胞的值是< = 1秒,這是人們感知某物「非常快」的極限。我意識到,實際上,必須是< = 0.1秒才能「即時」,但這似乎有點不切實際。

Comparison of processing time required to display CakePHP pages

(要查看全尺寸圖像,轉到Windows SkyDrive的在http://sdrv.ms/YomWdO

我嘗試使用的網站應用程序下運行,而「後」的php.ini的版本,事情並不糟糕,但我仍然覺得當我發佈大部分網頁時,我碰到了一個路障,特別是當我可以立即啓動一些網頁時。

回答

0

的解決方案是改變下列設置:

  • PHP誤差水平(E_ALL,E_NOTICE,E_STRICT等)
  • $ php_errormsg中記錄
  • mysqlnd.collect設置(第二個)
  • 禁用Xdebug的

然後,獲得一個專用的生產服務器,這樣你就不必保持開關副本的php.ini。最後,如果這不能加快速度,這只是一個個人項目(儘管它可能是一個關鍵的個人項目),放棄並繼續生活。通過編輯文件core.php中解決

1

檢查您的會話配置,並確保您的會話存儲設置正確。例如。如果您使用的是數據庫,請確保它可以在快速網絡或本地訪問,並且用戶具有所有必需的權限。如果會話駐留在文件系統中,請檢查可用性和權限。最後,檢查一下你的php配置;這看起來不像Cake問題。

+0

不幸的是,我已經使用默認的CakePHP頁面檢查了會話存儲,數據庫在本地運行,並且CakePHP頁面顯示了n o錯誤。 –

+0

對於我可以查看的資源,您是否有任何建議可以瞭解有關調整php.ini以獲取速度的更多信息? –

+0

我懷疑這是一個調整問題。它看起來像'session_start'遇到的情況是可修復的,但需要一段時間才能找出。你可以設置一個快速的非CakePHP測試頁面來運行'session_start'來縮小問題的範圍。如果它仍然存在,你知道這是一個PHP問題,你可以開始手動配置你的PHP會話處理;如果沒有,這是一個CakePHP問題。 – domsom

-1

同樣的問題

變化Configure::write('debug', 2);Configure::write('debug', 0);

是2比0

路徑:應用程序/配置/ core.php中