2012-12-02 61 views
0

我有一個數據庫管理系統的任務是創建一個完整的在線出價網站,它允許用戶做很多事情,比如定時拍賣的出價,基於定時可用性的現在購買以及搜索更多的東西。我已經完成了網站,但有一個小例外:一旦用戶贏得定時拍賣,必須通知該用戶他/她是贏家並且24小時結算該項目。在PHP中,如何讓一個進程運行來監視一個事件?

我的早期方法包括簡單的PHP腳本,用戶在頁面上查詢數據庫以查看出價時間是否結束以及查看誰是贏家,但這種方法有兩點錯誤。 1.用戶必須不斷刷新以確定他/她是否贏了 - 如果他們在購物頁面上。 2.如果用戶在拍賣結束後一個月內沒有登錄該網站,他/她將不知道他/她贏得了拍賣的一個月,因此未能24小時結賬。

我一直在閱讀關於cron作業的信息,但我擔心的是,由於它們是預定的作業,所以沒有方便的時間安排作業,以便高效處理作業。我的意思是,我不能持續監控,並讓拍賣結束後立即獲勝的每個用戶都知道。

我也讀過PHP的exec(),但我不確定它是我需要運行這個任務的工具,因爲一旦exec()完成,它不會重新運行。

所以我想,我的問題是,如果任何人有一個想法,我可以實現,以幫助我完成這項任務。

回答

1

您應該使用cron--讓它每分鐘運行一次以檢查數據庫以查看某些拍賣是否結束。我認爲你解釋的更大的問題是向用戶發送通知。如果是這種情況,他們可能不在網站上(或者在獲得某個隨機頁面時),那麼不要通過網站通知他們,當然也不能通過PHP請求來通知他們可能會或不會向網站發送的請求。相反,考慮由cron調用的PHP檢查獲勝者是否發送電子郵件通知他們。

想想Facebook(只是因爲考慮到用戶羣是其最普遍體驗的例子) - 他們提供了一個通知區域,如果你在網站上,但如果你不在一段時間,他們會給你一個電子郵件讓你知道發生了一些事情。這是你應該做的。

+0

我們使用cron以相當小的時間間隔運行PHP腳本(每10-12秒)爲我們的網站做這種事情 - 它的效果很好。 – Ross

+0

更新 - 請記住,如果你運行多個主機負載平衡,他們應該通過某種合併互斥體協調通知傳遞 - 最可能的是一個分貝。 – Ross

0

您應該重新考慮使用cron調度,您可以以非常快的間隔運行作業。

相關問題