我有一張地圖。在這張地圖上,我想顯示從幾個表中收集的實時數據,其中一些表的行數驚人。不用說,獲取這些信息需要花費很長的時間。此外,涉及ping。根據離線或遠離的服務器,這些數據的收集時間可能會在1到10分鐘之間變化。爲什麼連續運行PHP腳本這麼糟糕?
我希望地圖能夠快速響應,因此我決定向我的數據庫添加一個只包含地圖所需數據的新表。這意味着我需要一個後臺進程來不斷更新我的新表中的信息。 Cron工作當然是一種可能性,但我希望在前一個時間間隔完成後立即刷新數據。如果離線IP地址的數量突然增加,並且循環運行時間比Cron作業的時間間隔更長,會怎樣?
我自己的解決方案是在PHP中通過命令行創建一個無限循環。此循環會刷新映射到MySQL的數據,並記錄其他有用的數據,例如循環時間和Ping失敗嘗試等,然後在短暫停頓(幾秒鐘)後重新啓動。
但是 - 人們反覆告訴我,一個永遠運行的PHP腳本是壞的。經過一段時間後,它會消耗千兆字節的RAM(以及其他可怕的東西)
部分我正在寫這個問題來確認事實是否如此,但是關於如何去寫一個乾淨的東西的一些技巧和竅門循環不會泄漏內存(如果可能的話)不會出錯。關於這個問題的意見也將不勝感激。
我認爲這個問題的答案對我將標記爲正確的問題最爲重視。
一個令人難以置信的小問題,但請不要添加簽名/簽收問題。 (除此之外,這是一個構建得非常好的問題。):-) – 2011-03-20 22:58:05
對不起,謝謝:-) – Hubro 2011-03-20 23:03:54