2012-11-30 121 views
1

我正在開發一個網站(使用LAMP堆棧),它必須處理許多用戶自定義的調度任務。它的工作原理如下:用戶創建一個事件並設置一個日期,其他用戶(多達63個)可以加入。在設定日期前幾個小時,系統必須通過電子郵件向訂閱該事件的每個用戶發送電子郵件。就是這樣。如何處理Web服務器上的大量計劃任務?

但是,我從來沒有處理過調度,我知道的唯一工具(很差)是cron和at。我的計劃是爲每個事件創建一份工作,該工作將調用一個腳本來獲取所有訂閱者的電子郵件併發送郵件。

我的問題是:我的計劃/設計很好嗎?它是否可擴展?我應該注意哪些更好的選擇?

回答

1

,如果您考慮使用的應用服務器適當的框架(而不是一個簡單的Web服務器),Springtask scheduling layer這是簡單易用。在服務器上安排作業確實需要的不僅僅是一個簡單的LAMP安裝,但我暫時還沒有使用過PHP,所以也許有一個等價的東西。

Here's這篇文章比較了一些選項。

+0

這看起來比我想象的要複雜得多......但也似乎是一個強大的解決方案。我認爲花費一些額外的時間來學習應用服務器是值得的,而不是半分配計劃任務。您提供的鏈接非常有用!坦克! – drakenation

2

爲什麼每個事件都有單獨的cron作業?我爲cron作業做了一些類似的事情,每小時只運行一次,如果有任何新聞稿要發送,它只是處理它們。在你的情況下,你會有一個腳本每小時運行一次,並獲取用戶列表,以便在所需的時間間隔內發生事件。

它會工作。至於可伸縮性,至少要確保腳本運行在它自己的進程中,以免不必要地使服務器陷入困境。

也許創建一個php-cli腳本?

我做我的大部分工作在Rails的今天,並有豐富的後臺處理庫,其中一個是Resque它使用Redis的服務器,以保持工作 的軌跡我發現了一個PHP克隆https://github.com/chrisboulton/php-resque

可能是矯枉過正爲您的使用情況,但給它一個鏡頭也許

+0

對於通訊,這似乎是一個合理的解決方案。但是,我不知道cron作業是否會對我的用例有好處,因爲它有一個用戶定義的日期,用戶可以選擇一分鐘。每分鐘運行一次cron作業都會影響性能,而在更大的時間範圍內運行可能無法達到我想要的水平。我可以將創建事件的分鐘數限制爲15或30的倍數(這會更容易處理),但我寧願嘗試其他方法。 – drakenation

+0

用cron很難做到實時響應。把最短時間限制在15分鐘左右是合理的,這樣你就不會這麼做了。我的觀點是有一個不影響網絡服務器的進程發件人。即使你使用了諸如救援的圖書館,如果你每分鐘運行一次,它也可能是太多活動。 –