1
我有一个小订单服务应用程序,通过ajax将订单提交给PHP脚本。 当PHP脚本接收到它的命令后,它将它放入数据库中,发送一个'OK'消息返回给客户端,然后向客户发送确认电子邮件,向我发送确认邮件。 问题是,客户端没有看到“确定”(它更新浏览器显示)约15秒。如果我注释掉电子邮件发送,请不要拖延。PHP邮件()函数中的延迟
... write to database
echo "OK";
mail($semail,'Msg Subject',$message, $header, $bounceto);
mail($semail2,'Msg Subject',$mesage, $header, $bounceto);
消息只是几行。
问题:
- 调用mail()函数时为什么会有延迟?
- 如何在不等待PHP脚本完成的情况下发送'OK'消息?我正在猜测某种冲动。
感谢您的信息和建议。一分钟的延迟可能是可以接受的。如果我可以将缓冲区刷新到客户端,然后让PHP突然离开,那可能会更好? –
它应该与http://php.net/manual/en/function.fastcgi-finish-request.php一起工作,但它需要https://php-fpm.org/ – Mark
...并且有http:// php.net/register_shutdown_function你可以把邮件功能。尽管如此,我仍然认为他们不适合解决方案。电子邮件从来不是即时的,所以我仍然选择排队。 – Mark