PHP flush don';行不通
我试图让PHP flush工作2个小时,我不能让它工作,在localhost中它工作,但当我在服务器上拖动它时,它停止工作。 代码如下:PHP flush don';行不通,php,flush,Php,Flush,我试图让PHP flush工作2个小时,我不能让它工作,在localhost中它工作,但当我在服务器上拖动它时,它停止工作。 代码如下: <?php ob_implicit_flush(true); ob_end_flush(); for ($i=0; $i<5; $i++) { echo $i.'<br>'; sleep(1); } ?> 我尝试了很多其他版本,但是我喜欢的所有版本都只能在localhost上运行(如下所示),
<?php
ob_implicit_flush(true);
ob_end_flush();
for ($i=0; $i<5; $i++) {
echo $i.'<br>';
sleep(1);
}
?>
我尝试了很多其他版本,但是我喜欢的所有版本都只能在localhost上运行(如下所示),而不能在我的服务器上运行。我在某个地方读到,修改php.ini文件中的一些行是可以修复的,但我使用的是Aruba托管windows域,所以我无法编辑php.ini,我该怎么办
更新:我在其他两个免费托管服务上试用了它,并且都能正常工作,这只是我的主要托管服务的问题:它会是什么?更新:由于我发现很多脚本都使用ini\u集,我试图检查它们设置的值,我不知道它们是否有用:
session.use\u trans\u sid 0
输出缓冲4096
zlib.output\u压缩关闭
尝试
<?php
ini_set('session.use_trans_sid', 0);
ob_implicit_flush(true);
ob_end_flush();
for ($i=0; $i<5; $i++) {
echo $i.'<br>';
sleep(1);
}
?>
或检查:
这是可行的,但仅在默认的apache环境中:
<?php
ini_set('output_buffering', 0);
ini_set('zlib.output_compression', 0);
if( !ob_get_level() ){ ob_start(); }
else { ob_end_clean(); ob_start(); }
for ($i = 0; $i < 10; $i++) {
//For Nginx we have to reach minimum buffer size,
//so if it is not enough increment output
echo str_pad( $i . '<br>', 1024 + 10, ' ', STR_PAD_RIGHT );
flush();
ob_flush();
sleep(1);
}
您的服务器可能有一个缓存前端以减少负载。您正在调用ob_start()?我甚至尝试过使用ob_start和ob_flush,但问题可能是我的服务器有一些集成的缓冲区。我不怀疑这是否可以工作,我只是不知道如何工作?也不确定,在谷歌搜索时偶然发现了它。我已经编辑了我的帖子,并添加了另一个问题的链接。你应该试一试。抓住稻草不是回答问题的方法。不过,很难重现这个问题。所以我无法测试它。这可能有效,但我使用的是windows主机,因此此文件夹不存在:(在windows中,不要担心nginx配置,尝试增加输出字节,尝试达到行的4096字节。
echo stru pad($I.
,4*1024+10',str pad_RIGHT);
gzip off;
proxy_buffering off;
fastcgi_buffer_size 1k; #set buffer to 1k
fastcgi_max_temp_file_size 0;
fastcgi_buffers 128 1k; #set max buffer size to 1k + 128*1k