2017-01-31 8 views
2

Интересно о буферизации в php. Я прочитал много потоков об этом.Почему буферизация по умолчанию не включена в php

How to fix “Headers already sent” error in PHP

Why use output buffering in PHP?

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

Ex.

Преимущества буферизацию вывода для веб-разработчиков

  • Токарный буферизацию вывода в одиночку уменьшает количество времени, необходимое для загрузки и рендеринга наш HTML, потому что он не отправляется в браузер на куски, как PHP процессов HTML.
  • Все фантазии, которые мы можем сделать с помощью строк PHP, теперь можем сделать с нашей всей HTML-страницей как одну переменную.
  • Если вы когда-либо сталкивались с сообщением «Предупреждение: невозможно изменить информацию заголовка - заголовки, уже отправленные (вывод)» при настройке файлов cookie, вы с удовольствием узнаете, что буферизация вывода - это ваш ответ.

Если буферизация вывода обеспечивают только преимущества, почему я должен включить его вручную функции ob_start() или каким-либо другим способом?

+0

Вы хотите скопировать свои страницы входа? –

+0

@JeroenHeier Я не понимаю, если у меня есть бар на всем сайте, где я помещаю имя пользователя из БД, чей вход в систему, Сначала я должен проверить, зарегистрирован ли пользователь, поэтому мне нужно запустить start_session -> и проверить переменные , Укажите «страницу входа». // EDIT С другой стороны, если пользователь хочет войти в систему, сначала я должен проверить, что он не вошел в систему, поэтому на login_page мне следует использовать start_session() – Kentakis15

+1

Недостатки: использование памяти; отсутствие контроля над стеком буферов; могут «потерять» критические сообщения об ошибках; будьте осторожны с бесконечными циклами в вашем коде, если вы буферизуете вывод; риск коррупции, если ваш результат не является текстом/html (например,загрузка файлов); сайт может показаться менее отзывчивым; Сценарии CLI могут не захотеть буферизировать, но отображать вывод напрямую –

ответ

0

Это, вероятно, вопрос, основанный прежде всего на мнениях, который не должен появляться в переполнении стека.

С другой стороны, я буду рисковать, сказав, что этот вопрос имеет один короткий и определенный ответ, и, вероятно, все согласятся со мной. Таким образом, чтобы ответить на ваш вопрос:

Это происходит потому, что явно всегда лучше, чем неявное

Цитирование Jon тарелочкам из here:

В общем

  • неявной: что-то выполняется автоматически.

  • Явно: вы написали что-то в исходном коде, чтобы указать, что вы хотите.