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

将输出返回到客户端后保持web服务器工作(在php中),php,Php,我有一个PHP网页,其中有一个按钮。每当用户单击此按钮时,都会向服务器发送一个AJAX请求,并向其发送一封电子邮件。屏幕上还会显示通知。(这类似于在Facebook上发表评论,显示消息,同时服务器继续发送电子邮件) 由于发送电子邮件需要时间,我希望服务器首先将输出返回给用户,然后继续发送电子邮件 有人知道如何在PHP中实现这一点吗?谢谢。从php发送电子邮件应该不会花费太长时间,因为它所要做的就是向邮件服务器发送消息,这可能会占用发送电子邮件之后的时间 但是,为了回答您的问题,您可以执行另一个p

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

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


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

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

但是,为了回答您的问题,您可以执行另一个php脚本作为后台进程,并让该脚本发送电子邮件。在linux机箱上,它非常简单:

exec('php phpscript.php > /dev/null &');
它将作为后台进程执行
phpscript.php
,以便当前脚本不会等待它完成。如果需要,可以将输出重定向到/dev/null以外的其他位置,以便以后实际查看输出


您可能需要使用
phpcli
而不是
php
。取决于服务器的设置方式。

这与

根据我的回答,如果邮件处理时间过长,那么你的MTA配置就有问题


但是假设这是一个你不能修复的东西,你可以考虑在你的代码执行一个明确的退出之后使用通过()调用的回调来发送电子邮件;p> 由于PHP的线程支持充其量是粗略的,所以最好的办法是将电子邮件内容放入另一个PHP脚本中,并使用以下方法在后台运行:@waitinforatrain:“sketchy充其量”-告诉我更多-我不知道PHP对线程有任何支持。@symcbean,有一个半废弃的pecl包,pcntl_fork()它分叉了进程(虽然不是线程可以用于类似的情况)和一些版本的php_线程是浮动的around@waitinfortrain,没有,还是一无所获。谢谢你的回答。我试试这个。顺便说一下,我找到了PHP函数header()。如果我想将用户重定向到其他位置,我可以使用此功能吗?并在调用此函数后保留发送电子邮件代码。您不能使用对ajax请求的重定向响应将用户发送到其他页面。Hi symcbean,但是,程序仍然需要等待register_shutdown_function()注册的所有函数,不是吗?然后它仍然被延迟。是的,如果没有线程运行,您无法处理数据。但浏览器并不是一直在等待。