PHP中是否可以关闭连接(本质上告诉浏览器没有更多数据可用)但是可以继续处理。我正在考虑的特定情况是,我想提供缓存的数据,然后,如果缓存已过期,我仍然会提供缓存的数据以快速响应,关闭连接,但继续进行处理以重新生成并缓存新的数据数据。本质上,唯一的目的是使网站显得更具响应性,因为在用户等待内容重新生成时不会偶尔出现延迟。
更新:
PLuS对我一直在寻找最接近的答案。为了澄清几个人,我正在寻找可以实现以下步骤的东西:
这很重要,它必须是纯PHP解决方案。不能安装其他软件。
我终于找到了解决方案(感谢Google,我只需要继续尝试搜索字词的不同组合)。
<?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(); // All output buffers must be flushed here flush(); // Force output to client // Do processing here sleep(30); echo('Text user will never see');
我尚未进行实际测试,简而言之,您发送了两个标头:一个标头告诉浏览器确切的数据量,然后一个标头告诉浏览器关闭连接(只有在收到预期数量的标头之后才会执行此操作)内容)。我还没有测试过。