2012-02-18 107 views
9

是否可以用phpmailer發送異步郵件?用phpmailer發送異步郵件

普通郵件發送代碼片段如下:

$mail->Send();

PHP等待發送()移動之前返回結果。是否有可能讓phpmailer立即返回結果,而無需等待真正的電子郵件發送例程完成。

回答

8

更新2016年5月

如用戶@Sinak Salek PHP不支持多線程提及。 它可以使用pthreads擴展名。

原始

PHP不支持多線程本身(您需要美麗做到這一點)。您可以通過將電子郵件保存在數據庫中,然後使用其他腳本(例如,使用cron作業)來處理它們。通過這種方式,您不必等待底層的電子郵件框架。

另一件事,如果phpmailer速度慢,可能是由於底層郵件程序(sendmail,postfix等)設置不正確。

+1

謝謝。在我們的例子中,我們將下面的異步curl請求實現爲一個只負責發送電子郵件的php腳本。 http://stackoverflow.com/questions/962915/how-do-i-make-an-asynchronous-get-request-in-php – Haluk 2012-11-14 15:29:24

+0

歡迎您。感謝您鏈接到您的解決方案,這是一個很好的解決方法:) – CodeTower 2012-11-14 17:07:10

+1

PHP確實支持多線程,並通過衆所周知的擴展支持多處理。我想這就是你本來的意思,如果這樣連接到數據庫也需要適當的擴展和許多其他的東西。請注意,pthreads擴展實際上是衆所周知的,並且非常直接地使用 – 2016-05-21 18:45:21

0

如果你在linux上,你可以把你的php腳本放在一個exec命令中,並在後臺啓動它(在命令的末尾放一個&)和靜默模式(2> & 1>/dev/null )