如何在 PHP 中发送 HTTP 响应并继续执行长时间运行的进程?

Mary-Kate Olsen
发布: 2024-11-16 12:30:03
原创
268 人浏览过

How to Send HTTP Responses in PHP and Continue Execution for Long-Running Processes?

在 PHP 中发送 HTTP 响应并继续执行

当面对超过 Web 应用程序超时的耗时操作时,开发人员经常寻求解决方案以在 HTTP 之外继续执行 PHP响应传递。在这种特殊情况下,挑战是使 PHP 能够及时传输完整的 HTTP 响应,同时在规定的一分钟时间范围内启动并完成数据库和电子邮件处理。

最简单的方法是利用 ob_end_flush( ) 和flush() 具有策略性的功能。通过终止输出缓冲过程并释放 HTTP 标头以及用户可见的文本,脚本有效地向客户端发出响应已完成的信号。

以下是演示此方法的示例代码片段:

ob_end_clean();
header("Connection: close");
ignore_user_abort(); // Disable abort
ob_start();
echo ('Success message for the user');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Flush the initial content
flush();            // Ensure proper flushing
session_write_close(); 
// Delegate time-consuming tasks here
sleep(30);
echo('Tasks completed after 30 seconds');
登录后复制

通过这种方法,脚本会通知客户端操作成功并启动后续耗时的任务,而不会导致应用程序超时。

以上是如何在 PHP 中发送 HTTP 响应并继续执行长时间运行的进程?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板