当面对超过 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中文网其他相关文章!