我试图让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
这是有效的,但仅在默认的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/nginix.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
尝试
<?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_flash命令无法正常工作