Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Заметки Дизайнера" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Файлы и потоки
Вниманию читателей!Отдельные выпуски рассылки в той или иной мере взаимосвязаны. С предыдущими выпусками Вы можете ознакомиться:
# # # Вы также можете подписаться на рассылку "PHP 5: Новые возможности". PHP 6 уже в разработке!Еще в ноябре 2005 года на встрече в Париже разработчики обсудили новые возможности следующей, шестой, версии PHP. Интересует ли Вас, какой будет эта версия? Примите участие в опросе, который проводится на сайте рассылки. http://pterodactyl.l2p.net/e107/ [опрос на английском языке: PHP 6: Are you interesting in? (PHP 6: Вы зантересованы?) - YES (ДА) - NO (НЕТ)] |
PHP 5 для начинающихThe PterodactylCopyright 2006 Pterodactyl's School Copyright 2006 Pterodactyl's School. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". 02.06.2006
Аннотация Рассмотрены основные особенности работы с потоками в PHP (локальными, удаленными и сжатыми файлами; стандартными потоками ввода-вывода; трубами). Перечислены основные функции для работы с файлами и потоками, поддерживаемые протоколы. Дано представление о контексте потока и пользовательских потоках. Начиная с версии PHP 4.3.0, доступ к файлам претерпел существенные изменения благодаря появившейся поддержке концепции потоков, которая в PHP 5 получила дальнейшее развитие. В результате стало возможным обращаться к различным файлам (локальным, удаленным, сжатым и т. п.) как к потокам, не заботясь об их конкретном типе (ранее каждый тип файлов был представлен отдельно, что обуславливало наличие специфических правил работы с каждым из них) - и даже определять свои собственные (пользовательские) потоки. Базовые функции для работы с файлами (точнее, с файловой системой) - Filesystem Functions - существуют в PHP давно и должны быть хорошо знакомы разработчикам; поэтому ограничимся лишь кратким (и далеко не полным) перечислением. Функция ПодсказкаСледует упомянуть о двух не слишком известных режимах доступа к открываемому файлу, поддерживаемых, начиная с версии PHP 4.3.2, - Функция Функция Функция Функция Функция Также назовем следующие функции. Функция Функция ПодсказкаСчитывать в память содержимое файла целиком бывает не всегда целесообразно. В случае очень больших файлов может оказаться предпочтительнее открыть файл ( Функция Некоторые другие функции для работы с файлами будут упомянуты в секции «Прочие манипуляции». Для нас существенным является то, что все эти функции работают либо с указателем на файл (file handler), для создания которого необходимо указать его название, либо непосредственно с самим названием. Почему это важно, мы рассмотрим в секции «Потоки». Отметим, что, начиная с PHP 5.0.0, функции, работающие с названиями файлов ( Поток (stream) представляет собой обобщение для файла, сети, сжатых данных и других ресурсов; все они могут быть использованы сходным образом при помощи общего набора функций. В частности, такими функциями являются функции для работы с файловыми системами, рассмотренные в секции «Базовые функции» (таким образом, возможность их применения расширяется далеко за пределы одних только локальных файловых систем), а также специальные потоковые функции (Stream Functions). С некоторыми из них мы вскоре познакомимся ближе. Существенными признаками потока является возможность последовательного чтения из потока и записи в поток, а также позиционирования специального указателя в пределах потока. В PHP потоком считается любой ввод и вывод данных. Поток, в общем случае, может быть адресован при помощи следующего формата: Унифицированность доступа к разнотипным ресурсам обеспечивается за счет использования дополнительного кода, специфического для каждого типа. Однако, этот код "скрыт" от разработчика и автоматически вызывается унифицированными функциями. Такой дополнительный код служит как бы оболочкой для обслуживаемого им ресурса и называется wrapper. Его название совпадает с названием протокола ( print_r(stream_get_wrappers()); Array ( [0] => php [1] => file [2] => http [3] => ftp [4] => compress.bzip2 [5] => compress.zlib [6] => https [7] => ftps ) Контекст потока (stream context) представляет собой набор опций и параметров, определяющих некоторые особенности поведения потока. Контекст создается с помощью функции Опции могут быть переданы в виде массива непосредственно при создании контекста или установлены позже, с помощью функции Параметры (точнее, пока только единственный поддерживаемый параметр) можно установить с помощью функции Пользовательские потоки (user streams), поддерживающие отсутствующие в системе протоколы, могут быть разработаны в виде классов и зарегистрированы с помощью функции
Трубы (pipes). Открыть поток для чтения или записи к исполняемой программе можно при помощи функции <?php $fp = popen('ls -l /', 'r'); // for Windows: popen('dir /', 'r'); while (!feof($fp)) { print fgets($fp); } pclose($fp); ?> bin boot dev etc home lib lost+found media misc mnt net opt proc root sbin selinux srv sys tmp usr var Стандартные потоки. Стандартные потоки ввода-вывода <?php $fp = fopen('php://output', 'w'); fwrite($fp, 'Blah blah blah'); fclose($fp); ?> Blah blah blah Архивы. С помощью одного из протоколов для работы со сжатыми файлами - <?php $fp = fopen('compress.zlib://foo.gz', 'w'); fwrite($fp, 'Blah blah blah'); fclose($fp); ?> URL. Получить доступ к удаленным файлам можно с помощью протоколов <?php $fp = fopen('http://pterodactyl.l2p.net/', 'r'); while (!feof($fp)) { print fgets($fp); } fclose($fp); ?> При работе с файлами также могут оказаться полезными следующие функции. Функция <?php $fp = tmpfile(); fwrite($fp, 'Blah blah blah'); fseek($fp, 0); print fgets($fp); fclose($fp); // it removes the file ?> Blah blah blah Функция <?php $fp = fopen('foo.txt', 'w'); flock($fp, LOCK_EX); // exlusive fwrite($fp, 'Blah blah blah'); flock($fp, LOCK_UN); // unrelease fclose($fp); ?> Функция rename('old.txt', 'new.txt'); Функция ulink('ftp://user:password@example.com/pub/file.txt'); Функция ulink('ftp://user:password@example.com/pub'); |
В избранное | ||