首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

急求:关于PHP实时向客户端输出数据的有关问题

2012-04-14 
急求:关于PHP实时向客户端输出数据的问题测试代码如下:?phpob_start()for($i 1 $i 100 $i++){$so

急求:关于PHP实时向客户端输出数据的问题
测试代码如下:
<?php
ob_start();
for($i = 1; $i <= 100; $i++){
  $sourceName = 'filetoupload' . $i;
  $imageArray = array();
  $message = "Image $i has been uploaded to the server";
  echo $message;
  flush();
  ob_flush();
  usleep(500000);
}
ob_end_flush(); 
?>
测试结果如下:
在本地服务器上该脚本就可以边运行边输出,可是在内网服务器上运行就是100次循环运行完后才输出;

想要的正确结果:
如同在本地服务器上运行结果一样,边运行边输出显示。请问为什么同样的脚本在内网服务器执行就是不同的结果,是不是与php.ini中的哪个配置项有关??? 与哪些配置项有关???望得到大家的帮助,先感谢了


[解决办法]
你假如真的急的话!我想出一个办法!就是页面传值,不要用循环了!

PHP code
$id=empty($_GET['id'])?1:intval($_GET['id']);$sourceName = 'filetoupload' . $i;$imageArray = array();$message = "Image $i has been uploaded to the server";echo $message;if ($id>=100){exit();}$id++;$msg.="<META HTTP-EQUIV=Refresh CONTENT=0;URL=?id=".$id.">";echo $msg;exit();
[解决办法]
为这问题 我开启了好久没用的linux 最终发现是缓存的问题 
PHP code
<?phpob_start();for($i = 1; $i <= 100; $i++){    ob_end_flush();//关闭缓存    $sourceName = 'filetoupload' . $i;    $imageArray = array();    $message = "Image $i has been uploaded to the server";    echo $message;    flush();    ob_flush();    usleep(500000);}ob_end_flush(); ?>
[解决办法]
探讨
引用:
为这问题 我开启了好久没用的linux 最终发现是缓存的问题

PHP code

<?php
ob_start();
for($i = 1; $i <= 100; $i++){
ob_end_flush();//关闭缓存
$sourceName = 'filetoupload' . $i;
$imageArray = arr……

[解决办法]
这个缓冲和浏览器相关,和apache的某些模块也相关。
keep try
===================================
PHP code
ob_end_clean();apache_setenv('no-gzip', 1);ini_set('zlib.output_compression', 0);ini_set('implicit_flush', 1);ob_start();//开始缓冲数据for($i = 1; $i <= 100; $i++){    $sourceName = 'filetoupload' . $i;    $imageArray = array();    $message = "Image $i has been uploaded to the server<br/>";    echo $message.str_repeat(" ",1024);//ie有默认的1k buffer    ob_flush();    flush();    usleep(500000);} 

热点排行