PHP冲洗不起作用

时间:2014-11-08 00:21:05

标签: php flush

我正在尝试让PHP刷新工作2小时,我无法使其工作,在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_set,我试图检查它们设置的值,我不知道它们是否有用:
session.use_trans_sid 0 output_buffering 4096 zlib.output_compression Off

2 个答案:

答案 0 :(得分:0)

尝试

<?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);
  }
?>

或检查: php implicit_flush command not working correctly

答案 1 :(得分:0)

这样可行,但仅限于默认的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);
}

Nginx需要更多配置:

通常在/etc/nginx/nginx.conf

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