2012-06-28 2 views
0

У меня есть следующий цикл по каждому элементу:Динамически нагрузка Еогеасп петля

   <?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/client, выходные буферы и т. д. Что это за данные, дайте некоторую информацию. –

+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 
?> 

EDIT: Кроме того, добавление задержки после промывки может решить эту проблему:

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

Пожалуйста, прочитайте подробнее о промывке и предлагаемых проблемах при промывке здесь: http://php.net/manual/en/function.flush.php

Смежные вопросы