2010-05-30 59 views
1

當新用戶加入時,我必須向網站中的所有用戶發送郵件。 我的問題是腳本發送大約400封郵件後停止執行。 我已將set_time_limit設置爲0.並且在發送10封郵件之後我還給了sleep(2)。使用PHP發送大量電子郵件

這個問題背後的原因可能是什麼。任何解決這個問題的方法。有沒有更好的方法發送批量電子郵件?

由於提前

玫瑰

回答

0

我也有類似的問題,這是下降到內存使用情況,你怎麼送他們,你能提供任何代碼?

2

我們這樣做的方式是在cron的幫助下完成的。

我們(在我們公司)將用戶列表分成50個地址塊。這些塊放在數據庫中的表格中(將數據塊鏈接到電子郵件數據(標題,正文,...)。

通過cron.php文件,每5分鐘觸發一次因此,該系統抓住的第一個可用塊需要發送,發送出的郵件數據庫。

+0

我也在使用cron作業,它被設置爲在白天執行兩次。 我無法遵循上述方法,因爲 1.網站中可能有多個新用戶,此列表會不時發生變化。 2.將該用戶的詳細信息發送給該站點中的所有其他用戶後,需要更新每個新用戶對應的字段(新用戶標誌爲零) – Rose 2010-05-30 09:44:01

0

如果PHP在safe mode運行,set_time_limit不會有任何效果。如果你必須運行PHP安全模式,您可以使用配置指令max_execution_time修改默認時間限制。

+0

安全模式關閉可能情況下 – Rose 2010-05-30 09:31:54

0

我不知道腳本停止的原因,但是y ou還要求提供更好的方式發送批量電子郵件。我發現使用電子郵件包比內置的PHP郵件命令提供更多的控制。 Swift Mailer是一個非常好的。

0

嘗試設置任務隊列。當您的Web應用程序想要發送電子郵件時,它將其添加到任務數據庫中,並且一個單獨的守護進程處理每個任務。這意味着,您可以設置一封電子郵件發送給網站的每個成員,並且守護進程將每隔2-4秒發送一次。請參閱Kohana task queue module(PHP),Delayed_job(Ruby)和Celery(Python)獲取一些靈感。

0

我發佈了一個新的答案,因爲這一個不涉及我的前一個。

我想知道:你到底在哪裏設置set_time_limit0?我的意思是,它是在php.ini,.htaccess中,還是從ini_set()的php文件中。

該值是否可能被覆蓋?