Объясните почему на экране пояувляется тексто после "Остановить"

HelpFinder

Новичок
Объясните почему на экране пояувляется тексто после "Остановить"

Делаю чат. Собираюсь использовать Ajax но в данный момент мне важно определить почему у меня проблемы с выводом текста на экран. В цикле php Скриптом происходит непрерывный опроз базы данных и если там появляется запись то она сразу же выводится в окно фрейма. но по чемуто экран Пуст и только после того как я нажму на кнопку "остановить". на экране появляются все те фразы которые должны были вывестись. В чем может быть дело? может какието надо ввести Метатеги или команды php дополнительные? у меня только
PHP:
while(1){
   ПолучитьИВывести();
   flush();
   sleep(3);
}
 

Фанат

oncle terrible
Команда форума
ФПОИСК!

Этот вопрос - единственный, который задают по данной теме!
 

HelpFinder

Новичок
Я видел только то что сервак не справляется при большом числе юзеров. но у меня другая ситуация. я тесчу один свой скрипт и он подвисает. Settimelimit тоже соптавил без ограничения. а поиск не помогает. пишешь "остановить" слово и там нет ответа в выдавшихся топивок.

-~{}~ 10.03.07 13:10:

Может ты знаешь сам? Моё подозрение лишь в том, что после отправки данного в базу данных, нужно вызвать принудительное обновление фрейма
<php
if (!isset($_POST['send']))
{
?>
<script>top.frame1.reload</script>
<?php
};
 

crezd

Новичок
ничего не понятно

покажи хтмл и яву кнопки "остановить" или как ты эту кнопку обрабатываешь, и вообще побольше кода, а то нихна не понять
 

HelpFinder

Новичок
кнопка "остановить" - это на браузере. а Цикл вывода сообщения в фрейм сейчас покажу:
PHP:
<?php
	include "html.php";
	html_header("","left");
	include "cdb.php";
	$db=new CDB();
	$rez_max_id=$db->Query("select max(id) as maximum from room");
	if($rez_max_id->Count()){
		$phrase_id=$rez_max_id->FetchAssoc();
		$max_id=$phrase_id["maximum"];
	}else{
		$max_id=0;
	}
	$db->Close();
	set_time_limit(0);
	$db=new CDB();
	while(1){
		$messages=$db->Query("select * from room where id>".$max_id);
		if($messages->Count()){
			while($msg=$messages->FetchAssoc()){
				echo $msg["who"].":".$msg["text"]."<br>";
				$max_id=$msg["id"];
			}
		}

		flush();
		sleep(3);
	}
	$db->Close();
	html_footer();
?>
Вот этот дряной кусочек даже если его как оттдельный скрипт запускаешь, а не внутри фрейма, он должен определять когда в таблице базы данных появилась новая фраза и выводить её. а он нихрена не выводит. точнее кудато он выводит это но совем не сразу а только когда в браузере кнопку "Остановить" нажимаешь.
 

crezd

Новичок
смысл делать первый while я не вижу, если ты собераешься делать аякс чать то тебе надо:

1.Сделать обычный while, вот ты его уже сделал

PHP:
     $messages=$db->Query("select * from room where id>".$max_id); 
        if($messages->Count()){ 
            while($msg=$messages->FetchAssoc()){ 
                echo $msg["who"].":".$msg["text"]."<br>"; 
                $max_id=$msg["id"]; 
            } 
        }
2. ты делаешь javascript функцию в которой ты инициализируешь таймер который через какой то промежуток времени будет запускать аякс javascript функцию, которая будет запускать пхп функцию которая будет выполнять while который написан выше.
 

HelpFinder

Новичок
тоесть в этом цикле надо убрать вывод на экран а оставить это на совесть Аякса вытаскивать данные отсюда и выводить вэ кран?
 

HelpFinder

Новичок
а вот я не умею пользоваться Ajax-ом. но встречал в нём метод как раз предназначенный для периодического обновления. одним словом неденю придется убить на всё изучение ((
 

HelpFinder

Новичок
мне сейчас потратить несколько дней для того чтобы по крупицам разобратсья в этой Ajax когда как любой специалист по php мне покажет как это сделать и я уже за выходные весь чато доделаю. в другой раз этот программист меня по 1с попросит помощи и я ему подскажу и сокращу его время. Так надо действовать. а ты говоришь "банить"
 

crezd

Новичок
HelpFinder
а в чём польза? материал надо знать самому, чтобы также успешно самому и использовать, а каждую секунду тыркать человека и просить помощи не есть хорошо.
 

tf

крылья рулят
мне сейчас потратить несколько дней для того чтобы по крупицам разобратсья в этой Ajax когда как любой специалист по php мне покажет как это сделать и я уже за выходные весь чато доделаю. в другой раз этот программист меня по 1с попросит помощи и я ему подскажу и сокращу его время. Так надо действовать. а ты говоришь "банить"
ну и не пиши тогда на php, раз не хочеш его учить
 

maxru

МИФИст

Всегда интересовало "программирование" на 1С.

если(параметр1<=параметр2)
{
печать(параметр1);
}
как-то так чтоли? :p
 
Сверху