2009-08-14 31 views
1

我有一個cron,它可以生成整個郵件信息並使用$mail_queue->put(.....)放入一個數據庫表中,並且可以在郵件發送後刪除郵件。用PEAR/Mail_Queue發送超過10,000封電子郵件的最佳方式

以下是我需要幫助的地方:在獲得上述信息後,發送電子郵件的最佳方式是什麼?立即運行$mail_queue->sendMailsInQueue(),使用其他cron作業或其他內容?

服務器限制的方式是100封電子郵件/分鐘。目前Mail_Queue的最後一個csv差異沒有應用(目前支持該技術),所以我不能使用「延遲」選項。

我有一個想法,使用$seconds_to_send選項,但它是在create_time字段的基礎上計算的,這不是一個很大的幫助,但它也是一個選項。

任何意見和建議將非常感激。

+3

這是垃圾郵件的人嗎? – kokos 2009-08-14 00:24:26

+2

@Kokos:批量郵件有很多合法的原因。如果他從頭開始寫一個新的電子郵件系統,而不是使用垃圾郵件發送者已經使用的許多現成的系統之一,我敢打賭,這是一個合理的商業目的。 – 2009-08-14 00:58:16

+0

不 - 我們需要這個系統來更好地處理自定義時事通訊,警報和註冊電子郵件 – RRStoyanov 2009-08-14 08:26:48

回答

3

就我個人而言,我會去cron的方式,因爲它給失敗的機會更少。假設您的郵件服務器停止響應或出於某種其他原因變得不可用。或者如果整個網絡在幾個小時內脫機,但服務器仍在生成電子郵件。我說使用隊列。

至於延遲的事情,只需要一個服務/ cronjob每六十秒拿起一個隊列,彈出100封電子郵件併發送它們,然後退出。您可能會收到一封電子郵件隊列,但無論您選擇哪種系統,都會發生這種情況。無論如何,這個隊列在非高峯時段都是空的。

+0

是的,隊列是好的,但是如果你的整個網絡離線幾個小時,並且你還在推送郵件到隊列中,你的郵件服務器將會遇到麻煩(100/min是好的,但是這對於任何形式的*郵件*郵件 - 50K電子郵件將需要半天)。是的,磁盤空間很便宜 - 類似的事件告訴我們,300 GB的可用空間還不夠。換句話說,如果你在洞中,不要挖!你是發送郵件的人,這不像他們在離線時會去的任何地方。 – Piskvor 2010-10-11 12:55:23

0

爲什麼你不循環100封電子郵件和睡眠60秒。這無需花費時間,腳本運行時間稍長一點。

2

使用兩個腳本。一個是用你需要發送的電子郵件填充你的mail_queue表,第二個腳本是一次發送90個郵件的郵件。設置第二個腳本大約每2分鐘左右激活一次。

你也可以升級你的主機方案;-)

相關問題