Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无需缓慢加载页面即可发送大量电子邮件的最佳方式_Php_Email - Fatal编程技术网

Php 无需缓慢加载页面即可发送大量电子邮件的最佳方式

Php 无需缓慢加载页面即可发送大量电子邮件的最佳方式,php,email,Php,Email,我的脚本会发送新评论的通知电子邮件,这可能会发送给50个成员,需要发送50封电子邮件,这可能需要20秒,用户等待的时间太长了!PHP中实现这一点的最佳方法是什么?是否有异步方式 有没有异步的方法 是的,有 exec('wget PATH_TO_YOUR_SCRIPT_THAT_SENDS_THE_NEWSLETTER > /dev/null &'); 请注意,数据库替代方案也是一个不错的选择。但是,如果您在Linux上(并且不需要数据库),这也应该起作用。一种简单的方法可能是将必

我的脚本会发送新评论的通知电子邮件,这可能会发送给50个成员,需要发送50封电子邮件,这可能需要20秒,用户等待的时间太长了!PHP中实现这一点的最佳方法是什么?是否有异步方式

有没有异步的方法

是的,有

exec('wget PATH_TO_YOUR_SCRIPT_THAT_SENDS_THE_NEWSLETTER > /dev/null &');

请注意,数据库替代方案也是一个不错的选择。但是,如果您在Linux上(并且不需要数据库),这也应该起作用。

一种简单的方法可能是将必要的信息(电子邮件地址、内容)存储在数据库中,并使用cron作业每隔一分钟左右运行一次批处理过程。批处理过程可以查询数据库中是否有待发送的电子邮件,如果有,则检查这些电子邮件,然后删除数据库条目。

确实可以异步完成

最简单的方法是将电子邮件数据插入数据库,而不是实际运行电子邮件,然后使用cron作业定期实际发送电子邮件


当然还有其他方法,但这可能是最直接的方法。

您可以使用curlpost启动异步脚本。将超时设置为较短的时间段,以便在发出POST请求后脚本可以继续。您可以在POST请求中设置电子邮件信息或将其存储在数据库表中。

我会使用类似RabbitMQ的东西。你的网站就像一个制作人向兔子发送电子邮件请求;然后运行一个消费者来处理来自Rabbit的请求


优点-如果您的消费者摔倒了,那么当您重新启动时,它将从停止的位置(上次确认的请求)重新启动。

这太长了!你可以安排一个CRON定期运行一个PHP脚本并发送电子邮件。Symfony的Switftmailer也有。注意,您不需要Symfony框架来使用Swiftmailer(或者它的捆绑包/组件,如果它们是按照规范编写的)。哦,还包括一个日志插件,这样你就可以跟踪成功(和一个基于网络的插件),特别是如果你需要尽可能多地发送电子邮件的话。发送电子邮件是棘手的所有垃圾邮件防御存在。