2012-03-16 104 views
1

我有一個find()調用,有時需要很長時間才能完成,具體取決於用戶選擇的日期範圍。這有時會導致服務器超時(2006:MySQL服務器已經消失),導致find()失敗。我嘗試使用以下方法更改超時值: ini_set('mysql.connect_timeout',5);增加MySQL服務器超時值

我的推測是,這是失敗的,因爲我不能覆蓋宿主包的服務器設置。 我被託管公司建議使用下面的代碼: SET @@ session.wait_timeout = 60

我將是通過CakePHP的增加MySQL服務器超時任何意見,非常感謝。

+0

你確定它不是超時的PHP腳本嗎? – inquam 2012-03-16 09:09:34

+0

我想說你應該考慮採用不同的策略來找到這些結果,並且/或者嚴格優化查詢和數據庫。你真的想讓*用戶*等待頁面加載很長時間嗎? – deceze 2012-03-16 09:10:16

回答

0

我猜你應該增加PHP請求超時,而那麼MySQL超時

set_time_limit(250); 
+0

我試過沒有任何運氣@NarayaN,謝謝你的建議。 – 2012-03-16 09:22:25

+0

@ CroninO'M工作嗎? – 2012-03-16 09:23:39

+0

@Viswanathan Iyer - 不,'set_time_limit()'對我的場景不起作用。 – 2012-03-16 09:29:08

0

我想你應該考慮的另一種方法。
因爲Apache運行的Apache會超時,雖然你可以設置一個很大的值(但是,一些主機禁止這樣做)。
您可以嘗試在用戶請求數據時通過AJAX提交表單。並使用一些後端技術(node.js)連接到mysql並查詢數據。然後發回到前端。

+0

感謝您的回覆@Magic。您的建議聽起來像是一個很好的解決方案,但我希望找到一個更容易的解決方案。 – 2012-03-16 10:22:34

+0

更簡單和正確的解決方案是分頁。查看您的回覆數據。 – Magic 2012-03-19 07:15:03