Как стать автором
Обновить
3
0

Пользователь

Отправить сообщение

Буфер вывода в PHP

Время на прочтение8 мин
Количество просмотров51K
В этой статье я хочу рассказать о том, как реализован слой «буферизации вывода» в PHP, как работает и как с ним взаимодействовать из PHP. В этом слое нет ничего сложного, но многие разработчики либо совсем не понимают, как с ним обращаться, либо не имеют полной ясности. Всё, о чём я буду писать, относится к PHP версии 5.4 и выше. Именно начиная с неё изменились многие вещи, связанные с буфером вывода (БВ). По сути, этот функционал был полностью переписан, поэтому совместимость с версией 5.3 сохранилась лишь частично.

Что такое буфер вывода?


Поток вывода в PHP содержит байты, обычно в виде текста, которые разработчику надо вывести на экран. Чаще всего для этого используется конструкция echo или printf(). Во-первых, нужно понимать, что любая функция, которая что-то выводит, будет использовать БВ из области PHP. Если говорить о расширениях для PHP, то можно получить доступ к функциям, пишущим в SAPI напрямую, в обход любого вышерасположенного БВ. API C задокументировано в lxr.php.net/xref/PHP_5_5/main/php_output.h, отсюда можно почерпнуть немало информации, например, о размере буфера по умолчанию.

Второй важный момент: слой БВ является не единственным слоем, в котором буферизуются выводимые данные.

И третье: в зависимости от SAPI, который вы используете (веб или cli), слой БВ может вести себя по-разному.

Ниже представлена схема, которая поможет понять всё вышесказанное:

Читать дальше →
Всего голосов 59: ↑52 и ↓7+45
Комментарии10

Спецификации PHP опубликованы для обсуждения

Время на прочтение1 мин
Количество просмотров11K
За 20 лет своего существования PHP стал одним из самых популярных языков для веб-разработки. Несмотря на наличие обширной документации, у PHP никогда не было формальных спецификаций. Эту ситуацию нужно исправлять в свете выхода следующей версии PHP 7 и уже существующих реализаций PHP, таких как HHVM. Все эти реализации должны быть максимально совместимы со спецификациями, а их нет.

Разработчики HHVM составили первоначальный черновик, который полностью передали в общественное достояние. Спецификации опубликованы на Github и доступны для обсуждения и правки.
Всего голосов 46: ↑36 и ↓10+26
Комментарии7

Информация

В рейтинге
Не участвует
Откуда
Жуковский, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность