Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Буферизация вывода: корректно ли отказаться от явной отправки содержимого буфера?
 
 автор: alexey_tihonenko   (08.02.2010 в 13:53)   письмо автору
 
 

Добрый день! Скажите пожалуйста, корректен и надежен ли такой подход:
1. В начале скрипта активируем "скаладывание" вывода в буфер с помощью ob_start();
2. Затем в теле скрипта генерируется весь вывод.
3. В конце скрипта не используем функции ob_end_flush(), ob_flush() и т.д.

Всегда ли при таком подходе информация из буфера будет уходить клиенту по завершении работы скрипта?
Или необходимо явно отправлять и очищать буфер в конце скрипта для надежной работы?

P.S. этот вопрос волнует меня не потому, что мне лень в конце дописывать ob_end_flush(), а потому что я разработал часть CMS на своей локальной машине, где все работает замечательно, и сейчас спохватился, что мне нужно будет потом это дело выкладывать на сервер провайдера, какого именно - пока неизвестно, возможно что там в php.ini буферизация будет отключена. Поскольку в скриптах достаточно много проверок, которые завершаются выходом в случаи ошибки, находить каждую конструкцию exit() и вставлять перед ней ob_end_flush() не хочется, можно пропустить что-либо. Да и времени на это много уйдет.
Поэтому я и задался этим вопросом.

  Ответить  
 
 автор: Trianon   (08.02.2010 в 14:01)   письмо автору
 
   для: alexey_tihonenko   (08.02.2010 в 13:53)
 

ob_start может быть вообще инициировано конфигом, а скрипт - и не знать о том, что его вывод буферизируют.
И тем не менее всё работает.

  Ответить  
 
 автор: Alexey_Tihonenko   (08.02.2010 в 14:25)   письмо автору
 
   для: Trianon   (08.02.2010 в 14:01)
 

>ob_start может быть вообще инициировано конфигом
Это хорошая идея. Спасибо!

Меня интересует ничего ли нет страшного в том, что в конце скрипта будет отсутствовать явная отправка и очистка буфера функциями php. Всегда ли при этом интерпретатор сам позаботится о том, чтобы отправить содержимое буфера в конце работы скрипта и очистить буфер?

Так то вроде после добавки в конфиг строчки ob_start() и выключении output_buffering все нормально работает. Но вдруг где-то подводный камень есть)

  Ответить  
 
 автор: Тень&   (08.02.2010 в 17:45)   письмо автору
 
   для: Alexey_Tihonenko   (08.02.2010 в 14:25)
 

А что гадать? Глянь в мануал.

  Ответить  
 
 автор: cheops   (09.02.2010 в 11:31)   письмо автору
 
   для: Alexey_Tihonenko   (08.02.2010 в 14:25)
 

Интерпретатор сам обо всем позабоится.

  Ответить  
 
 автор: Alexey_Tihonenko   (09.02.2010 в 11:37)   письмо автору
 
   для: cheops   (09.02.2010 в 11:31)
 

Спасибо!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования