2012-10-16 21 views
0

好吧,我知道標題並沒有真正告訴你我的問題是什麼,但我現在就試一試。 我正在開發一款遊戲。人們可以訂閱他們的動物進行比賽。該比賽從特定時間開始。這是一場所有用戶都可以訂閱的競賽。所以計算哪個動物是第一個,第二個等是在執行的php文件中發生的,每2分鐘有一個新的計算大約1小時。所以有30個計算。但是。此代碼未連接到登錄用戶。登錄的用戶可以點擊LIVE按鈕查看當前結果。開始用戶的PHP代碼(某些用戶的競爭),登錄或不是

示例:今天晚些時候17:00有一場比賽。從4名玩家中訂購了15只動物,他們都可以檢查動物的行爲。

我不希望有人發佈完整的代碼,但我想知道如何讓php代碼運行約1小時(所以執行代碼,睡眠2分鐘,新計算,睡眠2分鐘等)我的服務器左右。所以它沒有連接到用戶。

我想到了cron作業,但這實際上並不是我相信的解決方案。 感謝您閱讀:P

+0

爲什麼cron不是解決方案?聽起來對我來說是理想的... – Laurence

+0

有人告訴我,通過cron作業執行php代碼不是要做的事情。所以我應該使用cron作業呢? – freddddyyyyy

回答

0

兩種方法:

  1. 您使用的算法總是會得出同樣的結論,無論在運行時和誰運行它。您只需定義起始參數,然後在需要時隨時計算結果(或在開始和結束之間的任何時間點的中間結果)。因此,任何用戶都可以隨時訪問您的網站,並且該算法將根據某個固定的起始條件即時計算當前排名。
  2. 或者,您將所有數據都保存在中央數據存儲中,並實際以特定間隔更新數據;任何用戶都可以隨時請求當前排名,並且將使用來自數據存儲的最新數據。您仍然需要一種具有上述特徵的算法,因爲您可能明確地實際運行模擬實際上並不是。只需每隔x秒鐘,再次運行計算,計算從上次運行它們以來應該發生的變化。

從本質上講,您使用的任何算法都需要這種方法。即使是「實時」程序也只是保持循環,從以前的狀態一點一點地改變數值。這些變化之間的時間間隔可以任意延長,直到變得有必要時才計算出什麼。與此同時,您只需將所需的全部數據存儲在數據庫中。

+0

我將不得不重讀這幾次,但謝謝你的答案! 那麼你是否建議我使用cron作業? 事情是,每次計算我的數據庫中的結果表都會更新。我可以每2分鐘更新一次睡眠,還是有另一種方法可以提高效率? – freddddyyyyy

+0

是的,你*可以*每2分鐘做一次cron任務。但是,如果你每2分鐘做一次,爲什麼不每5分鐘呢?爲什麼不每隔60分鐘?爲什麼不僅當用戶請求查看最新狀態?這取決於你,只有權衡是不同的。計算更經常需要更多的服務器資源,但負載更加恆定。僅在需要時計算可能會更有效。在定期計算意味着數據將是老了一定的時間,計算每一個需要它的時候意味着它是更準確,但是可以佔用過多資源。爲您的情況找到最佳平衡點。 – deceze

+0

非常感謝廣泛的解釋,我想我明白了! – freddddyyyyy

0

克倫工作是我認爲賴特的方式。當你對算法不太好時,請檢查一下:How To: PHP with Cron job也許你必須使用不同的cron作業。

+0

已經看了看說,但我還是謝謝你:d 它更多的是一個什麼會爲我做的最好的事情的問題,而不是如何做它:P – freddddyyyyy

相關問題