Проблема с flush()

  • Автор темы Автор темы darkwiz
  • Дата начала Дата начала

darkwiz

Новичок
Проблема с flush()

Почему-то сообщения не выводятся. flush() не помогает. Ради интереса перед flush() поставил ob_flush() (я знаю как она используется, но поставил ради эксперимента)... Так вместе с ошибками (т.к. не было ob_start() ) стали и сообщения появляться. Убрал ob_flush() и сообщения опять не выводятся. В чем может быть проблема?

Примерный код здесь.
PHP:
 while(1==1) 
  { 
 
    $new_mess=mysql_query("SELECT * FROM `mess`");
    $new_mess_rows=mysql_num_rows($new_mess);
    for($i=1; $i<$new_mess_rows; $i++)
     {
        $new_mess_v[$i]=mysql_fetch_array($new_mess);
        echo $new_mess_v[$i]['aut_name'].' '.$new_mess_v[$i]['text'].'<br>';
        flush();
     }
          

      sleep(5);
  }
 
Некоторые версии Microsoft Internet Explorer начинают отображать страницу только после получения 256 байт вывода, поэтому вам может понадобиться отправить дополнительные пробелы перед очисткой, чтобы такие браузеры вывели страницу.

-~{}~ 22.11.06 01:31:

Может в этом дело?
 
Апокалипсис да, действительно. Вывел в цикле неск. комментариев и все заработало! Прикол :-)
 
darkwiz, все-таки это очень ужасно вот так вот гонять бедный скрипт в бесконечном цикле. Хостер, я уверен, не будет в большом восторге от подобного. Когда-то давно, подобная тема обсуждалась на форуме. А sleep в данном случае не так уж и сильно уменьшает нагрузку.
В любом случае, чат лучше всего делать со своим собственным многопотоковым демоном, такой подход позволяет спокойно держать до нескольких тысяч человек, а процессы с бесконечным циклом могут просто положить сервак.
А если количество человек не будет очень большим, то самый лучший вариант - создание простого чата с обновлением.
 
Сверху