array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ru', ), 'this' => array ( 0 => 'intro.stream.php', 1 => 'Введение', ), 'up' => array ( 0 => 'book.stream.php', 1 => 'Потоки', ), 'prev' => array ( 0 => 'book.stream.php', 1 => 'Потоки', ), 'next' => array ( 0 => 'stream.setup.php', 1 => 'Установка и настройка', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ru', 'path' => 'reference/stream/book.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
Потоки были введены как инструмент для
работы с файлами, сетевого обмена, сжатия данных и выполнения
других операций с помощью одного общего набора функций. Выражаясь
простыми понятиями, поток (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
- Зависит от того, какая обёртка используется.
Для потоков, связанных с файловой системой это обычно путь и имя файла. Для
сетевых потоков это, как правило, имя хоста (зачастую с добавлением к нему пути).
Описания целей для встроенных обёрток приведены в Поддерживаемые протоколы и обёртки.