2012-06-28 103 views
0

我有以下的foreach循环:动态加载foreach循环

   <?php 
      ob_start(); 
      foreach ($streams as &$stream) { 
       $array = stream($stream); 
      ?> 
       <a href="livestreams.php?stream=<?=$stream;?>"> 
        <div class="channel-preview" style="background-image:url(<?=$array[2];?>);"> 
         <div class="container"> 
          <hgroup> 
           <h1><?=$array[4];?></h1> 
           <h2><?=$array[3];?></h2> 
          </hgroup> 

          <div class="meta"> 
           <span class="live-viewers">Live Viewers:</strong> <?=$array[1];?></span> 
          </div> 

          <span class="game-badge starcraft-2" title="Starcraft 2"><span class="hide">Starcraft 2</span></span> 
         </div> 
        </div> 
       </a> 
      <?php 
        ob_flush(); 
        flush(); 
       } 
       ob_end_flush(); 
      ?> 

请注意,这只是整个脚本的一部分。它的问题是,它加载相当缓慢。我试图使用ob_flush();如你所见,加快速度,但没有太大的区别。

我的问题是整个页面的加载时间。页面甚至需要一些时间才能在浏览器中显示。在页面已经被渲染的时候,是否有可能使用AJAX加载循环?或者还有其他方法吗?

编辑:

的正被循环,虽然从外部服务器接收,这是最有可能是什么原因造成的延迟。我早该说过了。

+0

请阅读更多关于潮红和冲洗问题的建议变通办法:http://php.net/manual/en /function.flush.php –

+0

我想你应该优化什么stream()而不是修补ajax /客户端方式,输出缓冲区等。无论如何,这些数据是什么,给一些信息。 – 2012-06-28 20:03:08

+0

我已更新该问题。 – Lazze

回答

0

喜欢这样一个简单的一招可能会奏效[上php.net的建议]

<?php 
// All you need is 256 spaces first 
echo str_repeat(" ", 256)."<pre>"; flush(); 

// and ANY TAG before \r\n 
echo "working...<br/>\r\n"; flush(); sleep(1); // this in cycle 
?> 

编辑:另外加入冲洗后的延迟可能解决问题:

usleep(50000);// delay minimum of .05 seconds to allow ie to flush to screen 

请仔细阅读更多关于冲洗和建议在这里冲洗问题的变通办法:http://php.net/manual/en/function.flush.php