保持web服务器工作后返回输出到客户端(在php中)


Keep web server working after returning output to client (in php)

我有一个PHP网页,其中有一个按钮。每当用户单击此按钮时,就会向服务器发送一个AJAX请求,并向用户发送一封电子邮件。屏幕上还会显示通知。(这类似于在Facebook上评论,消息被显示,而服务器继续工作以发送电子邮件)

由于发送电子邮件需要时间,我希望服务器首先将输出返回给用户,然后继续工作以发送电子邮件。

有人知道如何在PHP中实现这一点吗?谢谢。

这和我在php后台运行时遇到的问题是一样的

根据我的回答,如果电子邮件需要很长时间来处理,那么你的MTA配置有问题。

但假设这可能是您无法修复的问题,您可以考虑在代码显式退出后使用register_shutdown_function()调用的回调发送电子邮件;

从php发送电子邮件不应该花很长时间,因为它所要做的就是向邮件服务器发送消息,这可能会花费之后发送电子邮件的时间。

然而,为了回答你的问题,你可以执行另一个php脚本作为后台进程,并让该脚本发送电子邮件。在linux操作系统上,就像这样简单:

exec('php phpscript.php > /dev/null &');

它将执行phpscript.php作为后台进程,因此您的当前脚本不会等待它完成。如果你愿意,你可以将输出重定向到/dev/null以外的地方,这样你就可以在以后实际查看输出了。

您可能需要使用php-cli而不是php