MST
Новичок
Алгоритм написания чата.... не пойму почему не работает :-/
В общем сначала все как обычно, страница с авторизацией, далее, если пользователь прошел авторизацию, то скрипт выдает
пользователю "скелет" сайты в виде набора <frameset>
В каждый frame грузится свой блок html
а в центральный фрейм должен грузиться скрипт, который выводит 10 предыдущих сообщений, а далее новые сообщения.
Скелет этого скрипта такой:
<?php
flush();
$sth=mysql_db_query($mybase,"select * from `chat`;");
if (!$sth || mysql_num_rows($sth) == 0) { echo "Нет сообщений"; return; }
while ($ref=mysql_fetch_object($sth)) {
echo "$ref->mess<br>\n";
flush();
$last_id=$ref->id;
}#endwhile
flush();
while (1) {
$sth=mysql_db_query($mybase,"select * from `chat` where `id` > '$last_id';");
if ($sth && mysql_num_rows($sth) > 0) {
while ($ref=mysql_fetch_object($sth)) {
echo "$ref->mess<br>\n";
flush();
$last_id=$ref->id;
}#endwhile
}#endif
flush();
sleep(1);
}#endwhile
?>
$ref->mess - это сообщение пользователей, которые они пишут в чат.
Дык вот проблема в том, что весь frameset подвисает из-за этого скрипта... Видимо из-за того, что скрипт не отдает конечный хэндл.
Тоесть скрипт циклический, хоть и каждую секунду делает flush();
Как победить?
Раньше у меня это как-то работало. Только не пойму, может, другие настройки php.ini были, может мозгов больше было.
В общем сначала все как обычно, страница с авторизацией, далее, если пользователь прошел авторизацию, то скрипт выдает
пользователю "скелет" сайты в виде набора <frameset>
В каждый frame грузится свой блок html
а в центральный фрейм должен грузиться скрипт, который выводит 10 предыдущих сообщений, а далее новые сообщения.
Скелет этого скрипта такой:
<?php
flush();
$sth=mysql_db_query($mybase,"select * from `chat`;");
if (!$sth || mysql_num_rows($sth) == 0) { echo "Нет сообщений"; return; }
while ($ref=mysql_fetch_object($sth)) {
echo "$ref->mess<br>\n";
flush();
$last_id=$ref->id;
}#endwhile
flush();
while (1) {
$sth=mysql_db_query($mybase,"select * from `chat` where `id` > '$last_id';");
if ($sth && mysql_num_rows($sth) > 0) {
while ($ref=mysql_fetch_object($sth)) {
echo "$ref->mess<br>\n";
flush();
$last_id=$ref->id;
}#endwhile
}#endif
flush();
sleep(1);
}#endwhile
?>
$ref->mess - это сообщение пользователей, которые они пишут в чат.
Дык вот проблема в том, что весь frameset подвисает из-за этого скрипта... Видимо из-за того, что скрипт не отдает конечный хэндл.
Тоесть скрипт циклический, хоть и каждую секунду делает flush();
Как победить?
Раньше у меня это как-то работало. Только не пойму, может, другие настройки php.ini были, может мозгов больше было.