2011-02-22 102 views
0

在我的網絡應用程序中,用戶給5分鐘做一些工作,然後5分鐘後,工作應該傳遞給其他人。因此,每項工作都會有user_id,並且每5分鐘必須更改一次user_id值。問題是有多個作業,我們希望使用15秒的時間間隔來定期運行腳本來處理此更改。而工作最多會傳給他人4〜5次,之後就會被忽略。如何每15秒檢查並更改mysql中的數據?

該作業&用戶數據存儲在MySQL數據庫中。

我最初的想法是在PHP腳本文件中使用cron-job,讓cron-job每15秒運行一次PHP腳本。 PHP文件將讀取作業表,選擇所有在5分鐘前具有時間值的作業,並將它們提取給其他用戶(如果一個用戶獲得所有作業,則無關緊要)。我只是想定期運行它,而不會佔用太多資源..但它是一個好主意嗎?一旦工作數量增加,這不會佔用太多資源嗎?

雖然它不一定是一致的(13〜16秒間隔就好),但我們希望腳本不會停止。

+0

您可以在頁面請求時動態確定適當的用戶標識,而不是每5分鐘靜態更新一次用戶標識字段? – mellamokb 2011-02-22 23:43:52

+0

你必須找到除cron之外的東西 - cron每分鐘只能做一件事(它不會做秒)。我認爲cron手冊建議在這種情況下適時的「等待」常規程序/腳本。 – 2011-02-22 23:55:29

+0

...怎麼樣...設置網頁每隔幾分鐘刷新一次自己?或者在頁面上有一個iframe,並且每分鐘都會運行一些ajax以獲取新的列表。或者讓cron運行updaescript,然後更新,然後睡15秒,用curl請求自己調用,再等15秒,再次調用自己(curl),然後死掉。或者,如果不是將用戶ID保存在一個字段中......如果分配的用戶是從記錄的年齡派生出來的......在前五分鐘內,它屬於用戶234。屬於用戶876 ... – changokun 2011-02-23 04:38:51

回答

1

創建一個讀取表狀態更新時間的cronjob。

- 顯示錶格狀態,如table;

例如:UPDATE_TIME:2011-04-10 15點27分32秒

比你能做的邏輯中的cronjob檢查日期。並且如果該日期大於15秒前或其他情況,則比您擁有更新的記錄。