Проблема с чатом

SLPT

Новичок
Проблема с чатом

Есть движок чата. Самописный. Раньше все было хорошо, но появилась проблема.

Главный цикл очень медленно работает. Если ставить после каждого сообщения

echo str_pad('', 4096)."\n";

Если так все написать, то чат работает отлично, но жрет много траффика, т.к. после каждого сообщения выводиться 4096 пробелов.

В чем проблема ?
 

SLPT

Новичок
Если оставить str_pad, но жрет много траффика, если убрать - ооооочень долго работает.
 

WP

^_^
Что значит долго работает? Не сразу сообщение появляется?
flush() делаешь после каждого сообщения?
 

SLPT

Новичок
Сообщения появляються через 10-20 сек, хотя раньше меньше секунды. flush делаю.

-~{}~ 17.07.06 19:11:

Вот, пожалуйста ... попробуйте сами:
http://priton.com.ua/
но это он так сейчас работает с str_pad ..... посмотрите что в виде html покажет ... много лишних символов ... а они никчему.!
 

SLPT

Новичок
типа в .htaccess написать php_value implicit_flush 0 ???

-~{}~ 17.07.06 19:30:

т.е php_value output_buffering 0 ?

-~{}~ 17.07.06 19:32:

ааа ...
еще заметил что пхпинфо говорит что implicit_flush Off Off

-~{}~ 17.07.06 20:20:

все по старому .. всеравно все так же! :(
 

WP

^_^
Феерично. Если не знаете зачем советовать? аутпук_фегуперинг и импляцит_флюш тут никаким боком, менять не надо.
PHP:
ob_flush();
flush();
 

SLPT

Новичок
WP
огромное тебе спасибо :)
Все работает именно так, как было и задумано! :)
 

WP

^_^
SLPT
А еще лучше, т.е. правильнее, сделать в начале скрипта
PHP:
ob_end_flush();
ob_implicit_flush();
И забыть про ob_flush и flush.
 

SLPT

Новичок
В начале?!
Хорошо .. попробую ..

Работать то оно работает, а я вот всего не понимаю ...
Коротко можешь обьяснить что к чему и этими ф-ями?! :)
 

SLPT

Новичок
И снова у меня эта же проблема ! ((
Ничего не хочет показывать если убераю echo str_pad('', 4096)."\n"; после каждого сообщения ....
У меня в файле стрим.пхп сначала подключаются все модули ... описываются функции и т.д. а потом идет бесконечный цикл вайл и в нем после каждого вывода вообщения пишу ob_flush(); и flush(); ... и ничего ...
По моему ему что-то в этом цикле не нравиццо ... потому что если в любом месте до цикла напишу к примеру echo "Test!\n"; exit; - все показывает .. как только я убераю exit; ничего не делает вообще! :(

-~{}~ 18.07.06 16:47:

ну что?!? никто не сможет мне помочЬ? :(
 

SLPT

Новичок
нет, на локалке показывает:
Notice: ob_flush() [ref.outcontrol]: failed to flush buffer. No buffer to flush. in F:\localhost\www\prtn\chat\stream.php on line 531.

а вот в нете, на сервере ничего!! :(

-~{}~ 18.07.06 18:12:

Никто ничего по этому поводу сказать не может?

-~{}~ 18.07.06 18:51:

еще актуально ... =(
 

SLPT

Новичок
Я под IE все разрабатывал ... 6 версия у меня ...
а ошибки ....на локалке они только что-то дают о себе знать ... а в нете на веб серваке все молчит!!
капец ....

вот к примеру такой код пишу:

while (true)
{

echo "test\n";
ob_flush();
flush();
sleep(1);

}

И то как-то странно показывает .... каждую секунду вывод происходит... но частями слово test
 
Сверху