簡體   English   中英

對許多電子郵件使用php郵件VS Pear功能(但頻率較慢)

[英]Using php mail VS Pear function for many emails (but slow frequency)

我知道對於大量電子郵件,建議使用Pear,但是我想知道在我的情況下是否值得深入研究(我安裝了它,但我有很多PEAR錯誤)

我需要向訂閱者發送電子郵件(大約20K),但是我的主機每小時只允許200封電子郵件 可以,因為我不需要每個人都同時收到電子郵件,我可以在一個月內發送所有這些郵件,所以我並不着急。

在那種情況下,可以有一個非常簡單的循環,該循環使用mail()發送電子郵件,然后休眠18秒(低於200電子郵件/小時)。 基本上,我在想的只是做這樣的事情

for($i=0;$i<=count($recipient);$i++)
{
   mail($recipient[$i].....);
   sleep(18);
}

與使用PEAR(需要更多時間)相比,這可以嗎?

您是否看過使用PEAR的Mail_Queue軟件包? http://pear.php.net/package/Mail_Queue 您可以將其設置為在一個進程中發送X封電子郵件,然后重新運行同一腳本以發送下X封電子郵件。

除了簡明的電子郵件,我當然不會使用本機郵件功能發送任何信息,也許不會在應用程序中通知您特殊情況。

如果您的服務器是基於Linux的服務器,那么您可以避免使用它(請參閱此問題 )。

盡管這聽起來似乎並不是一個很好的解決方案,但還要考慮到似乎所有收件人都在使用for循環(20k)。

如果您不想使用PEAR,則可能希望嘗試每小時設置一次cron作業,以某種方式(使用文本文件或數據庫)記住上次向其發送電子郵件的用戶,並發送下一批200 。

在這種情況下,您可能想每125分鍾設置一次cronjon,以確保您沒有達到限制。 還使用sleep(1); 在每個mail()將保留CPU。

查看此問題以獲取性能方面的考慮。

首先,我不會說好的老式mail()的局限性...

  • 手動編碼幾乎所有內容
  • 錯誤處理差
  • 沒有身份驗證(盡管這對您來說不是問題)

...與音量有關。

其次,我從未使用過PEAR Mail,因此無法談論其性能或開銷,但是您的用例恰好來自容量低的電子郵件服務器。 您不需要高性能來緩慢地執行操作,是嗎?

因此,我敢說您使用錯誤的標准來評估工具。

我的建議是,您將mail()留給極其簡單且不重要的任務(並且訂戶通信不具有這種資格),並使用適當的第三方郵件庫(不一定是PEAR的)。

特別是, Swift Mailer具有Throttler插件 ,旨在完全滿足您的要求:

如果您的SMTP服務器已設置限制以限制發送電子郵件的速率,則您的代碼將需要了解此速率限制。 Throttler插件使Swift Mailer的運行速度受到限制。

許多共享主機並沒有免費開放其SMTP服務器。 通常,他們制定了一些政策(可能是為了阻止垃圾郵件發送者),這些政策只允許您每小時/每天發送固定數量的電子郵件。

Throttler插件支持兩種速率限制模式,對於每種模式,您都需要進行數學運算以找出所需的值。 插件可以根據每分鍾的電子郵件數或每分鍾傳輸的字節數來限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM