我试图找到一种方法让PHP向浏览器指示所有页面输出已完成。页面完成后,我们正在运行一些统计代码,通常不需要很长时间,但万一它不希望让用户浏览器等待更多数据。这不能通过JavaScript完成,因为它需要与手机一起工作。PHP输出完成通知
我已经开始使用
mb_http_output("UTF8");
ob_start("mb_output_handler");
,以确保我没有问题,我的网站MB的文本(日本)输出缓冲。我希望ob_end_flush()能做到这一点,但如果我放置睡眠(10);在ob_end_flush()之后浏览器等待另外10秒。有没有人对此有任何想法?
UPDATE: 使用抖动接近下面我“ob_gzhandler”得到它用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压缩大小。
我试过这个,如果我添加一些像睡觉(20);在flush()之后;浏览器(FireFox 3.5)仍然显示加载指示器20秒。 – AWinter 2009-11-08 11:45:53
我终于得到了这个工作,但只有当我包含标题(“Content-Encoding:none”);在标题下方(“Connection:close”);任何想法为什么这可能是? – AWinter 2009-11-08 13:17:25
有关如何使用out设置标题(“Content-Encoding:none”)工作的任何想法;我宁愿保持gzip在可能的情况下运行 – AWinter 2009-11-08 13:20:50