能否使用phpmailer发送异步电子邮件?
常规的邮件发送代码片段如下:
$mail->Send();
PHP会等待Send()方法返回结果后再继续执行。是否可以让phpmailer立即返回结果,而不必等待实际的电子邮件发送程序完成?
能否使用phpmailer发送异步电子邮件?
常规的邮件发送代码片段如下:
$mail->Send();
PHP会等待Send()方法返回结果后再继续执行。是否可以让phpmailer立即返回结果,而不必等待实际的电子邮件发送程序完成?
2016年5月更新
正如用户@Sinak Salek所提到的,PHP确实支持多线程。 可以使用pthreads扩展来实现。
原文
PHP不能本地支持多线程(你需要这样做)。但是,你可以通过将电子邮件保存在数据库中,然后使用另一个脚本稍后处理它们(例如使用cron作业)来实现。这样,你就不必等待底层电子邮件框架。
另外,如果phpmailer速度慢,可能是由于底层邮件程序(sendmail、postfix等)设置不正确。
如果你在使用Linux系统,你可以将你的PHP脚本放在一个exec命令中,并在后台启动它(在命令的末尾加上&符号),并且以静默模式运行(2>&1 >/dev/null)。