首页 > 后端开发 > php教程 > 如何在通过 AJAX 启动长时间运行的进程后提前关闭 PHP 连接?

如何在通过 AJAX 启动长时间运行的进程后提前关闭 PHP 连接?

DDD
发布: 2024-12-29 07:06:09
原创
370 人浏览过

How Can I Close a PHP Connection Early After Initiating a Long-Running Process via AJAX?

提前关闭连接

此查询解决了在完成 PHP 脚本之前关闭连接的挑战。目标是通过 AJAX 启动一个冗长的过程,但返回一个指示其开始的响应,而不等待 PHP 脚本完成。

根据 PHP 手册,终止 TCP 连接而不结束 PHP 脚本涉及到更多只是发送一个“关闭”标头。用户注释#71172(2006 年 11 月)提供了一个全面的解决方案:

<?php
ob_end_clean();
header("Connection: close");
ignore_user_abort(true);
ob_start();
echo('Text the user will see');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
// Do processing here 
sleep(30);
echo('Text user will never see');
?>
登录后复制

要使该解决方案发挥作用,禁用输出缓冲、清除缓冲区,然后发送标头信息至关重要。虽然发送“close”标头是必要的,但立即关闭连接还不够。

后续用户注释#89177(2009 年 2 月)和#93441(2009 年 9 月)提供了有关连接处理和连接的更多见解。帮助阐明 PHP 中早期连接关闭的细微差别。

以上是如何在通过 AJAX 启动长时间运行的进程后提前关闭 PHP 连接?的详细内容。更多信息请关注PHP中文网其他相关文章!

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