PHP mail()函数中的延迟
我有一个小的订购应用程序,它通过ajax将订单提交给PHP脚本。 当PHP脚本收到订单时,它将其放入数据库中,向客户端发送“OK”消息,然后向客户发送确认电子邮件,再向我发送另一封。 问题是客户端在大约15秒钟内没有看到“OK”(更新浏览器显示)。如果我对发送的电子邮件进行注释,则不会延迟PHP mail()函数中的延迟,php,Php,我有一个小的订购应用程序,它通过ajax将订单提交给PHP脚本。 当PHP脚本收到订单时,它将其放入数据库中,向客户端发送“OK”消息,然后向客户发送确认电子邮件,再向我发送另一封。 问题是客户端在大约15秒钟内没有看到“OK”(更新浏览器显示)。如果我对发送的电子邮件进行注释,则不会延迟 ... write to database echo "OK"; mail($semail,'Msg Subject',$message, $header, $bounceto); mail($semail2
... write to database
echo "OK";
mail($semail,'Msg Subject',$message, $header, $bounceto);
mail($semail2,'Msg Subject',$mesage, $header, $bounceto);
信息只有几行
问题:
- 调用mail()函数时为什么会有延迟
- 如何在不等待PHP脚本完成的情况下发送“OK”消息?我猜是某种潮水
添加此选项将向用户输出缓冲区并切断连接,脚本的其余部分仍将执行,但不会发送额外的输出,因此请确保在调用
fastcgi\u finish\u request()
以及之后的mail()之前输出所有内容函数谢谢你的信息和建议。一分钟的延迟可能是可以接受的。如果我能把缓冲区刷新到客户端,然后让PHP跳转,它可能会更好。它应该工作,但是它需要…而且你可以在那里放置邮件功能。我仍然认为它们是黑客攻击而不是正确的解决方案。从来都不是即时的,所以我还是选择了队列。我说得太快了。看来fastcgi_finish_请求解决了问题,但事实上,由于PHP-FPM没有加载,它以错误终止了PHP脚本(您确实标记了)。这是一个虚拟托管环境,所以我不确定是否可以(或想要)加载PHP-FPM。谢谢。我实现了MySQL电子邮件队列函数。