[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Буферизация вывода и сброс
memba
Здравствуйте!

перевёл сервер с PHP 5.2 на 5.3 ... настроил, и обнаружил что не работают такие вещи как flush(), ob_implicit_flush(), ob_start() .. и всё что с этим связанно.

проверил на локальном настройки, всё в норме...

output_buffering = 4096
;output_handler =
implicit_flush = Off

В 5.3 ещё что-то надо?



Спустя 11 минут, 8 секунд (13.07.2010 - 13:59) linker написал(а):
У меня output_buffering = on

Спустя 29 минут, 51 секунда (13.07.2010 - 14:29) memba написал(а):
On не помогает..

да и вообще в документации написано, что там устанавливается размер блока буфера ...

Спустя 1 минута, 59 секунд (13.07.2010 - 14:31) KaFe написал(а):
linker
у меня в денвере
output_buffering = Off
на small http server
output_buffering = 4096

Там и там все работает нормально


Спустя 1 час, 52 минуты, 10 секунд (13.07.2010 - 16:23) memba написал(а):
тогда ничего не понятно.. видимо PHP кривой

Спустя 44 секунды (13.07.2010 - 16:24) linker написал(а):
Забыл, у меня в коде еще прописано ini_set('output_handler', 'zlib.output_handler');

Спустя 29 минут, 57 секунд (13.07.2010 - 16:54) SlavaFr написал(а):
да кроме включеного implicit_flush не чего вреоде как мешать не должно.
зделай в скрипте из прикола
еcho ini_get('implicit_flush');

у меня придчувствие, что не то ini подключено

Спустя 30 минут, 9 секунд (13.07.2010 - 17:24) memba написал(а):
Странно , он возвращает пустое место..

var_damp - string(0) ""

тоже самое с Safa_mod и register_globals они по-мойму это всё в раздел БЛОК отправили.

Спустя 6 минут, 33 секунды (13.07.2010 - 17:30) SlavaFr написал(а):
не, давай
phpinfo()

Спустя 1 час, 1 минута, 37 секунд (13.07.2010 - 18:32) memba написал(а):
в phpinfo()

Directive Local Value Master Value

output_buffering 4096 4096
output_handler no value no value
implicit_flush Off Off

всё внорме

Спустя 2 часа, 36 минут, 48 секунд (13.07.2010 - 21:09) SlavaFr написал(а):
Непонятно както. Извени, я не знаю почему не работает.

Спустя 1 час, 54 минуты, 48 секунд (13.07.2010 - 23:04) KaFe написал(а):
Ставь обратно PHP 5.2, я не вижу причин переходить на 5.3

Спустя 2 часа, 2 минуты, 57 секунд (14.07.2010 - 01:07) SlavaFr написал(а):
Цитата (KaFe @ 13.07.2010 - 20:04)
Ставь обратно PHP 5.2, я не вижу причин переходить на 5.3

a почему не на php3 ?
я с php3 начинал , зачем мне 4 нужен был?

Спустя 6 минут (14.07.2010 - 01:13) KaFe написал(а):
SlavaFr мне без разницы какая версия, что там было и что будет, я знаю что в php столько коричневой субстанции напихано, что об ней лучше не знать.

Работает, ну и ладно. Нету функции, сам придумал из других. Мы же Типа того - программисты. . wink.gif Ой мы не по теме. Дедмороззз не наказывай нас wub.gif

Спустя 4 минуты, 34 секунды (14.07.2010 - 01:17) SlavaFr написал(а):
Если мы програмисты, то должны разобратся почему не работает так как хотим. rollback зделатъ это дело не хитрое.

Спустя 6 часов, 22 минуты, 53 секунды (14.07.2010 - 07:40) linker написал(а):
У меня ПЫХ5.3, дома тоже, админы наконец в репозитории убунты надыбали 5.3 и собираются ставить. Если что-то не работает, значит просто что-то не так делаешь.
Давай исходить с начала. Что не работает, как не работает и в каком виде оно не работает?

Спустя 5 часов, 21 минута, 55 секунд (14.07.2010 - 13:02) memba написал(а):
Я ставил 5.3 на локалке вначале, запустил проекты и ужаснулся что ничего не пашет. Не ну если убрать все сообщения об ошибках то всё норм, но там же подготовка к версии 6.0, и следовательно было-бы не плохо переписать, то чего уже не будет в 6.0. Допустим если проект полностью ООП, то это ужас.. я привык ещё с 4 версии возвращать ссылки на объекты (=&), в 5-ой версии можно было без ссылки (=) и ссылкой (=&).. а вот в 5.3 он уже ругается, в 6.0 это-го вообще не будет.

Мне кажется они flush где-то заблокировали в ini и всё.

хорошо, примеры кода.

$n = 0;
while($n < 7)
{
echo $n."<br />";
flush();
sleep(1);
$n++;
}


ob_implicit_flush();

$n = 0;
while($n < 7)
{
echo $n."<br />";
flush();
sleep(1);
$n++;
}


это так для примера.. на втором сервере с 5.2 всё работает.

Впренципе эта буферизации и сброс в 98% случаях и не нужен. Но у меня на сервере стоит сокет-сервер. И в качестве отладки он сбрасывает инфу о подключившихся людях и о том что они говорят.

Спустя 35 секунд (14.07.2010 - 13:02) memba написал(а):
во втором примере кода надо flush(); убрать... забыл

Спустя 25 минут, 40 секунд (14.07.2010 - 13:28) linker написал(а):
А вы не пробовали сначала включать буферизацию ob_start(), прежде чем что-то делать с буфером?
p.s. Видимо вы хотите построчно постепенно выводить в браузер данные, не забывайте, что у браузера тоже есть свой буфер.

Спустя 5 минут, 38 секунд (14.07.2010 - 13:34) memba написал(а):
пробовал.

но ob_implicit_flush(); работает и без ob_start()

да и для flush() он вообще не нужен.

Спустя 4 минуты, 48 секунд (14.07.2010 - 13:39) linker написал(а):
ob_implicit_flush() отключает буферизацию и выводит содержимое буфера юзверю, аналог ob_end_flush(). Если ничего не буферизируется, то чего выводить?

Спустя 23 минуты, 50 секунд (14.07.2010 - 14:02) memba написал(а):
В документации автор которой Зеев Сураски. Написанно что:

Функция ob_implicit_flush() вызывает сброс буфера после любой команды создающей вывод. (echo, print, printf)

на PHP 5.2 отлично работает.

Все команды типа echo буферизируются, Они же не отправляются пока скрипт полностью не проработался. Следовательно ob_implicit_flush сбрасывает этот буфер.

Вообщем всёровно в моё случает так и так не работает на 5.3. Я не зря привел ещё пример просто с flush() который железно должен работать.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.