【发布时间】:2009-11-08 11:24:56
【问题描述】:
我正在尝试找到一种方法让 PHP 向浏览器指示所有页面输出已完成。页面完成后,我们正在运行一些通常不会花费很长时间的统计代码,但万一发生了,我不希望用户浏览器等待更多数据。这不能通过 JavaScript 完成,因为它需要在手机上工作。
我已经开始使用输出缓冲
mb_http_output("UTF8");
ob_start("mb_output_handler");
以确保我的网站 MB 文本(日语)没有问题。我希望 ob_end_flush() 能解决问题,但如果我放置 sleep(10);在 ob_end_flush() 之后,浏览器再等待 10 秒。有人对此有任何想法吗?
更新: 使用下面我“ob_gzhandler”的jitters方法让它与gzip一起工作有人在这里看到任何可能的问题吗?
//may be also add headers for cache-control and expires (IE)
header("Connection: close"); //tells browser that connection will be closed
ob_start();
ob_start("ob_gzhandler");
//page content
ob_end_flush();
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
再次更新:
请再看看上面的代码。你需要做一个 ob_start();在 ob_start("ob_gzhandler"); 之前然后调用 ob_end_flush();在调用 ob_get_length() 之前,您可以获得正确的 gzip 压缩大小。
【问题讨论】:
标签: php