Введение

Потоки были введены как инструмент для работы с файлами, сетевого обмена, сжатия данных и выполнения других операций с помощью одного общего набора функций. Выражаясь простыми понятиями, поток (stream) - это ресурс (resource), который ведёт себя как источник непрерывной последовательности данных. Это означает, что из потока можно последовательно читать данные, равно как и записывать в него. Также возможно перемещаться (fseek()) в разные позиции внутри потока.

Обёртка (wrapper) - дополнительный код, который объясняет потоку особенности работы со специфичными протоколами или кодировками. Например, обёртка http знает, как преобразовать URL в HTTP/1.0-запрос для файла на удалённом сервере. Существует множество обёрток, как встроенных в PHP изначально (смотрите Поддерживаемые протоколы и обёртки), так и дополнительных. Дополнительные обёртки можно добавлять отдельным скриптом с помощью функции stream_wrapper_register(). Добавлять можно произвольное количество обёрток, что делает возможности работы с потоками практически безграничными. Посмотреть список зарегистрированных на данный момент обёрток можно с помощью функции stream_get_wrappers().

Ссылка на поток записывается в следующем виде: scheme://target

  • scheme (строка) - Название обёртки. Например, file, http, https, ftp, ftps, compress.zlib, compress.bz2, php. Список встроенных обёрток можно посмотреть здесь Поддерживаемые протоколы и обёртки. Если название обёртки не указано, каждая функция, работающая с потоком, использует обёртку по умолчанию (обычно это file://).
  • target - Зависит от того, какая обёртка используется. Для потоков, связанных с файловой системой это обычно путь и имя файла. Для сетевых потоков это, как правило, имя хоста (зачастую с добавлением к нему пути). Описания целей для встроенных обёрток приведены в Поддерживаемые протоколы и обёртки.

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top