2012-09-11 56 views
3

我有一個無限期運行的PHP腳本,每5-10秒執行一次特定任務(do-while循環,在每次迭代結束時檢查數據庫以確定它是否與應該繼續)。這個任務包括MySQL數據庫查詢。處理數據庫連接的最佳方式是什麼?我應該:無限期運行PHP腳本,MySQL超時

a。)斷開連接然後每次迭代重新連接到數據庫?

b。)將連接超時設置爲無限制?

c。) ping數據庫以確保我仍然連接,並在執行和查詢之前根據需要重新連接?

d。)還有其他嗎?

編輯:爲了澄清,該腳本發送推送通知給用戶的iPhone。

+0

你在每次迭代中做什麼?爲什麼不使用計劃任務/ cron作業來連續執行腳本? – Josh

+0

旁註:我建議使用cron作業而不是while..do! b)不要這樣做 – Wh1T3h4Ck5

+0

我建議你將PHP腳本包裝在啓動腳本中,並簡單地讓它在數據庫連接錯誤中以受控方式死亡。自然,啓動腳本應該重新啓動它。 –

回答

1

建議您不能將PHP腳本作爲守護進程運行,這很荒謬。我已經做了好幾次了,而且效果很好。有some example code to get you started。 (需要PEAR ...如果你不是粉絲,請自行打造。)

現在,請到您的實際問題。如果你定期進行查詢,你的MySQL連接不會超時。該超時適用於空閒連接。絕對保持聯繫......沒有理由斷開和重新連接的開銷。無論如何,在數據庫發生故障時,由於腳本作爲守護進程運行,因此您可能不希望立即終止進程。

我建議處理異常並重新連接。如果重新連接失敗,請重新嘗試一段時間後再重新連接。經過一些失敗(無論什麼是合適的)後,您可能會在當時殺死這個進程,因爲某些事情可能被破壞,需要人爲干預。

+0

單詞,謝謝布拉德! – James