我的脚本会发送新评论的通知电子邮件,这可能是50个成员,需要发送50封电子邮件,这可能需要20秒才能让用户等待很长时间!在PHP中执行此操作的最佳方法是,有异步方法吗?
答案 0 :(得分:3)
一种简单的方法可能是将必要的信息(电子邮件地址,内容)存储在数据库中,并使用cron作业每分钟运行一次批处理。批处理过程可以在数据库中查询待处理的电子邮件,如果有要发送,则通过它们然后删除数据库条目。
答案 1 :(得分:2)
有异步方法吗?
是的,有!
exec('wget PATH_TO_YOUR_SCRIPT_THAT_SENDS_THE_NEWSLETTER > /dev/null &');
请注意,数据库替代方案也非常好。但是,如果您使用Linux(并且不需要数据库),这也应该有用。
答案 2 :(得分:2)
我会使用像RabbitMQ这样的东西。您的网站就像生产者向Rabbit发送电子邮件请求一样;然后让一个消费者运行来处理来自Rabbit的请求。
优点 - 如果您的消费者失败,那么当您重新启动它时,它将从停止的位置(最后确认的请求)进行拾取。
答案 3 :(得分:1)
确实可以异步完成。
最简单的方法是将电子邮件数据插入数据库而不是实际运行电子邮件,然后使用定期实际发送电子邮件的cron作业。
当然也有其他方式,但这可能是最直接的。
答案 4 :(得分:0)
您可以使用cURL POST启动异步脚本。将超时设置为短时间,以便在发出POST请求后脚本可以恢复。您可以在POST请求中设置电子邮件信息,也可以将其存储在数据库表中。