2011-06-12 83 views
0

有一天一位朋友建議玩一款名爲OGame的網絡瀏覽器遊戲。如果你不知道它,我會告訴你它是什麼:一個rts遊戲,你必須建立像採礦工廠,軍營等等。有趣的是,每個建築物都有建築時間,並且您可以在建築時註銷,因爲它會繼續進行。是否有可能在mysql5中有一個「內部」cron?

這樣的事情我會認爲是通過dbms進行管理的。我有我的記錄,我有一個建築物的結束時間。我如何檢查何時更新建築物?我是否需要一個外部應用程序,每秒鐘檢查哪些記錄需要更新?是否有可能與mysql5有一個內部調度程序啓動此表上的過程?如果是這樣,這是最佳做法嗎?

回答

2

我已經構建了一個類似的遊戲,並將結構結束時間(以及其他要觸發的事件)存儲在事件表中。我編寫了一個PHP守護進程,它定期檢查事件表是否有過期記錄,並相應地對其執行操作。

我無法在數據庫本身找到一種方法(如果我以後想遷移到另一個數據庫,它需要重寫)。 cron'd腳本可能會重疊。守護進程可以隨時跟蹤所有內容,並在事件排隊的速度快於正在處理的情況下輸出調試信息。我還添加了一個cron來定期檢查我的守護進程是否仍在運行,否則請啓動它。

Creating a daemon in PHP(如果你使用PHP)

希望有所幫助。

+0

那麼,如果您使用特定dbms的某些特定功能,那麼重寫問題是一個真正的問題。我會考慮在php,tnx中創建一個deamon。 – dierre 2011-06-12 15:50:11

相關問題