Подтвердить что ты не робот

PHP буферизация вывода - звучит как плохая идея, не так ли?

Просто хочу выбрать мозги экспертов по буферизации вывода php. Бывают случаи, когда я хотел бы реализовать это по той или иной причине, но мне всегда удалось изменить свой код, чтобы обойти его.

Я не использую его, потому что похоже, что это будет стоить ресурсов. Я имею в виду, если они могут предложить кодеру такую ​​прекрасную гибкость, почему бы им не всегда выводить буфер? Единственный ответ, который я могу придумать, заключается в следующем: потому что не буферизация это экономит огромные ресурсы, и с хорошей практикой кодирования вам не нужно.

Как я здесь?

4b9b3361

Ответ 1

По моему опыту, существенное влияние на производительность не оказывает. Я также не могу найти последовательных ответов на эту тему - некоторые утверждают, что едва ли что-то ударит по производительности, в то время как некоторые говорят, что есть незначительный, но значительный эффект. Существует даже комментарий к php.net, предполагающий, что буферизация увеличивает производительность по сравнению с несколькими выходными функциями, а не то, что я проверил это или что-то еще.

Я думаю, что вопрос о том, буферизует ли буфер, больше связан с предполагаемым использованием вашего приложения. Буферизация имеет большой смысл, если вы хотите сжать выходной файл перед его отправкой или если вы хотите точно контролировать, когда и где вывод происходит в вашем коде. Поскольку это не требует больших усилий для добавления буферизации, вы можете также попробовать его - это должно быть относительно легко удалить, если вам нужно.

Ответ 2

Я думаю, наоборот. Не вывод буферизации - это плохая идея, если вы не столкнетесь с ситуацией, в которой вы действительно нуждаетесь. Например, script, который собирается создавать огромные объемы вывода.

В большинстве случаев сжигание пучка времени программиста для сохранения неизвестного количества (дешевой) памяти звучит как трата ресурсов.

Ответ 3

Используя выходную буферизацию, я смог быстро сделать систему шаблонов легкого веса для домашней сети MVC для моего последнего проекта PHP. Я люблю его и считаю его очень полезным.

И в отношении ресурсов: это не тот ресурс, интенсивный. Если вы беспокоитесь о том, как мало он использует, PHP не является подходящим инструментом для этой работы. Я люблю PHP, но это НЕ самый легкий вариант. Однако на любом разумно современном сервере это не имеет значения.

Ответ 4

Если вы находитесь в ситуации, когда контент выводится перед заголовками, вам нужно занести его в буфер, иначе страница будет выходить из строя, чтобы содержимое выводилось перед заголовками. Это случилось со мной с общими библиотеками и не хватило времени, чтобы войти и сделать правильное исправление, чтобы начать. Это один из тех, которые отмечают //TODO/FIXME, а затем вернутся и сделают это позже.