PHP:输出完成后继续


PHP: continue after output is complete

首先,我不是在寻找ignore_user_abort。相反,我寻找一个函数来完成输出并将文档发送给用户。之后,我希望 php 脚本执行额外的过程,这需要几秒钟的时间对用户没有影响,只有后台进程。

用户也没有理由等待此操作完成。输出已准备好在之前赶上。PHP 是否提供了关闭与用户连接的功能,但在服务器上保留一段时间以完成工作?

php-fpm You 的最佳功能之一是 fastcgi_finish_requests()。这将完成客户端的会话,并在服务器端继续该过程。它也是消息传递的最佳用例,作为 cron 的 queque 或延迟处理的替代方案。

但是,它仅限于php-fpm!

您应该将工作拆分为 2 个文件(一个具有初始处理的文件,用于生成输出),第二个文件较重,需要几秒钟的时间,但不应让用户等到完成。

然后,让浏览器使用 Ajax 或隐藏iframe调用它。

您甚至可以让第二个脚本返回成功/失败通知,并使用 JavaScript 捕获该通知以通知用户,而不会影响他的实际初始输出。

看起来你想要的是一些Ajax的东西。如果将响应发送回用户,脚本将结束。但是使用 JavaScript,您可以启动对另一个 PHP 脚本的 Ajax 调用,该脚本不会为用户更改任何内容。

您可以尝试使用curl();来ping本地主机并触发另一个脚本执行以运行您拥有的任何额外任务。

运行脚本后,将条目添加到队列表中。然后运行 cron 作业来处理队列,锁定记录,然后在处理它们时删除它们,因此如果您的 crons 重叠,它们不会执行两次相同的作业。