首先,我不是在寻找 ignore_user_abort。相反,我寻找一个函数来完成输出并将文档发送给用户。之后,我希望 php 脚本执行额外的过程,这需要几秒钟对用户没有影响,只有后台进程。
用户也没有理由等待此操作完成。输出已经准备好迎头赶上。PHP 是否提供关闭与用户的连接的功能,但在服务器上停留一段时间以完成工作?
php-fpm You 的最佳功能之一是 fastcgi_finish_requests()。这将完成客户端的会话并在服务器端继续该过程。它也是消息传递的最佳用例,作为 cron 队列或延迟处理的替代方案。
但是,它仅限于 php-fpm!
脚本运行后,将条目添加到队列表中。然后运行一个 cron 作业来处理队列,锁定记录,然后在处理它们时将其删除,因此如果您的 cron 重叠,它们不会两次执行相同的作业。
您应该将您的工作分成 2 个文件,(一个具有初始处理,产生输出),第二个较重的文件需要几秒钟,但不应让用户等到完成。
然后,让浏览器使用 Ajax 或 hidden 调用它iframe
。
您甚至可以让第二个脚本返回一个成功/失败通知,并使用 JavaScript 捕获它以通知用户,而不会影响他的实际初始输出。
看起来你想要的是一些 ajax 的东西。如果您将响应发送回用户,则脚本将结束。但是使用 javascript,您可以启动对另一个 php 脚本的 ajax 调用,该脚本不会为用户更改任何内容。
您可以尝试使用curl();
ping localhost 并触发另一个脚本执行来运行您拥有的任何额外任务。