Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Php循环不在浏览器上更新_Javascript_Php_Loops - Fatal编程技术网

Javascript Php循环不在浏览器上更新

Javascript Php循环不在浏览器上更新,javascript,php,loops,Javascript,Php,Loops,这是我的一个问题: 加载循环时如何在浏览器(chrome、firefox)上更新页面,例如: <?php $var = 0; while($var != 10){ echo $var; $var++; sleep(1); } ?> 页面不更新,只有在php脚本执行完成后,有什么可以帮我的吗?谢谢。您可以这样做: <?php if (ob_get_level() == 0) ob_start(); f

这是我的一个问题:

加载循环时如何在浏览器(chrome、firefox)上更新页面,例如:

<?php
   $var = 0;
   while($var != 10){
      echo $var;
      $var++;
      sleep(1);
   }

?>


页面不更新,只有在php脚本执行完成后,有什么可以帮我的吗?谢谢。

您可以这样做:

<?php

    if (ob_get_level() == 0) ob_start();

   for ($var = 0; $var <= 10; $var++) {
      echo $var;
      ob_flush();
      flush(); // echo output buffer to client
      sleep(1);
   }

   ob_end_flush();

?>
zlib.output_compression = Off
或者尝试在代码中禁用它(如果允许):


这基本上是不可能的

PHP使用自己的输出缓冲(
php://output
)在发动机内部。该缓冲区会被代码中回显的数据填满。一旦引擎到达脚本的末尾,它将刷新整个缓冲区,并将其附加到Web服务器开始创建的头信息中(假设Web服务器是为浏览器预先准备响应的服务器,PHP是添加实际内容的服务器)

另一个限制是一些浏览器等待整个HTTP请求完成,然后开始呈现站点。不是所有的人都这样做,但也有一些人这样做

对于真实的实景,我推荐AJAX或更现代的WebSocket。第二个更为生动,因为它不会像AJAX那样以周期性方式重新加载。我建议你重新考虑你想做什么,如果有必要的话

如果你什么都不懂,我建议你看一些维基百科文章:

  • 阿贾克斯:
  • WebSocket:

php在服务器上运行-如果你需要在浏览器窗口中“实时”运行东西,你需要使用在浏览器中运行的东西(例如Javascript)。你到底为什么要在那里使用
sleep()
?@randak可能只是为了好玩。。我也这样做过。。像测试longpolling..你可以在找到一个解决方案-有一些技巧可以刷新输出。缺少一个
{
。只是测试了这个-似乎不起作用。是的..谢谢..修复了
{
但是请看我的链接。这个代码的精确副本(使用
{
)-在我的浏览器上它会立即显示出来(10秒后)。是的,这取决于您的服务器设置。您可能希望将该信息添加到您的答案中。“当您具有这些服务器设置时,以下代码起作用:”
 if(ini_get('zlib.output_compression'))
    ini_set('zlib.output_compression', 'Off');