2016-02-03 22 views
0

我已經編寫了代碼發送郵件給超過1200個用戶,循環1200次以便爲每個用戶生成唯一的隨機退訂鏈接,但由於此過程頁面正在延遲。請給我建議來完成這項任務。我的代碼如下:發送郵件給多個用戶而不循環

while ($result = mysqli_fetch_assoc($query)) { 
    $unsubscribe_link = 'XXXXXX'; 
    mail(
    $result['user_email'], 
    $subject, 
    message($unsubscribe_link), html_headers($from_mail) 
); 
} 
+1

爲什麼要爲1200個用戶執行單個功能要比重複1200次功能更快? – Ben

+1

這不是你應該如何去做這件事。你需要運行一個排隊的任務來做到這一點。 –

+0

這不適用於瀏覽器。你必須通過命令行或後臺任務執行它。如果你真的沒有其他選擇,你可以嘗試通過ajax來執行,通過進度條和按鈕來暫停/恢復/停止進程。 – fusion3k

回答

1

有可能正好連接在PHP的郵件功能的領域的電子郵件地址,以避免循環:

// multiple recipients 
$to = '[email protected]' . ', '; // note the comma 
$to .= '[email protected]'; 

然而,由於您發送個人退訂通過外觀鏈接到用戶,這是不可行的(因爲收件人會看到其他人的電子郵件地址)。此外,正如評論中提到的,這可能是一個更適合在後臺處理的任務。

PHP.net文檔提示:

值得一提的是,郵件()函數不適合在一個循環的電子郵件的卷。此功能爲每封電子郵件打開和關閉SMTP套接字,效率不高。 要發送大量電子郵件,請參閱»PEAR :: Mail和»PEAR :: Mail_Queue軟件包。

我本來以爲不過,這可能是安全的(垃圾郵件明智),更有效的使用第三方提供商爲你的交易電子郵件,例如Mandrill

相關問題