2012-01-27 56 views
1

我想出了一個我正在製作的簡單批量電子郵件的模式。電子郵件發件人將通過運行cron作業的php腳本每5分鐘發送X封電子郵件。問題是我認爲這不是最好的方法,而是尋找一種更好的方法;或驗證;)。批處理郵件mysql表設置?

(簡化)架構看起來像:

EmailList | JobQue | Jobs 
------------|----------|---------- 
    email | jobid | id 
      | email | esubject 
         | ebody 

的想法是創建一個新的工作時,將其添加到Jobs表上,凡需要發送將被添加電子郵件到JobQue表。
然後實際發送電子郵件的cron'd php腳本將循環遍歷JobQue表中下一個X個項目,發送並刪除它們。

這是做這件事的好方法嗎?它會在中等負載下屈曲嗎? (1000-5000封電子郵件,每天1-5個工作)?當然,如果有更多的電子郵件被添加然後發送,但是會有其他問題(例如試圖一次性向表中添加1000條記錄,即使我使用一個mysql查詢插入它們)?

感謝,
最大

+0

我認爲這在很大程度上取決於您系統的基礎設施,特別是其硬件。你應該自己做一些基準測試和壓力測試,因爲沒有人可以模擬你的環境。關於你對1000個插入封裝在單個查詢中的擔心:我認爲這應該在大多數情況下工作。 – pong 2012-01-27 16:23:57

回答

0

我覺得這是做的非常有效的方法。唯一的問題可能是,如果你想一次發送數千封電子郵件。它可能導致在php中超時。 用一個查詢將記錄添加到mysql中並不差,這是最好的方法。 但我必須說,副本取決於查詢本身。如果它太長(我的意思是一個太長的字符串),比你可以放鬆與服務器的連接。 但我認爲你完全不會遇到這種模式的問題。

0

至少,你可能想考慮一個比5分鐘更短的cron時間。如果您將X限制爲30(避免被列入大量黑名單的關鍵數字),則您需要16小時55分鐘才能完成5000封電子郵件。