PHP ob_end_flush()不会关闭浏览器连接

时间:2013-07-28 23:49:49

标签: php background-process

我们一直在依赖这个并且最近改变了服务器。基本上在php文件的末尾我们关闭连接并做一些繁重的工作,我们不希望浏览器挂断。根据我的经验,我们使用的这种方法会关闭浏览器连接,用户不会遇到任何问题。在这台新服务器上,连接保持打开状态并导致浏览器挂起。

我用这个非常简单的测试文件来玩它:

<?php
ob_end_clean();
ob_start();
?>

<html>
<head>
 <title></title>
</head>
<body>
testing...
</body>
</html>

<?
$size = ob_get_length();
header("Content-Length: $size");
header('Connection: close');
ob_end_flush();

//anything below this should NOT hang up the browser
sleep(30); //but it does :-(
?>

1 个答案:

答案 0 :(得分:1)

这与PHP无关。您的新服务器可能支持Keep Alive连接(您的浏览器肯定会请求),导致连接保持打开以用于后续请求。尝试将Header(“Connection:close”)添加到您的脚本中,或者关闭Web服务器中的Keep Alive支持。

相关问题