PHP / 18. Файлы

Как правило, в веб-приложениях ввод/вывод организуется между броузером, сервером и базой данных, но есть множество случаев, когда в этот процесс вовлекаются и файлы. Файловые функции полезны при получении веб-страниц для последующей локальной обработки, хранения информации без применения баз данных и записи информации для обмена с другими приложениями. Постепенно PHP становится инструментом, служащим не только для простого заполнения веб-страниц, и здесь функции файлового ввода/вывода становятся еще более полезными. Интерфейс файлового ввода/вывода в PHP напоминает интерфейс ввода/вывода в C, хотя он и менее сложен. Основным элементом, идентифицирующим файл, из которого читают или в который записывают, является дескриптор файла. Этот дескриптор реализует связь с конкретным файлом и используется для операций с этим файлом. Эта глава в основном посвящена открытию и закрытию файлов, работе с файловым дескриптором в PHP и тому, что можно делать с содержимым файла после его открытия. В главе 19 рассматриваются каталоги и файловые метаданные, такие как права доступа.
Статьи раздела '18. Файлы':
Блокировка файла
Задача Необходимо получить исключительный доступ к файлу, чтобы не допустить его изменения, пока вы читаете или обновляете этот файл. Например, данные гостевой книги записываются в файл, тогда два пользователя должны иметь возмож...
Выбор случайной строки из файла
Задача Необходимо выбрать из файла случайную строку, например показать выборку из файла афоризмов. Решение Вызовите функцию pc_randomint(), показанную в примере 18.3, которая распределяет возможность выбора равномерно по всем...
Запись в несколько файловых дескрипторов одновременно
Задача Необходимо направить вывод в более чем один дескриптор файла; например, требуется регистрировать сообщения на экране и в файле. Решение Заключите ваш вывод в цикл по файловым дескрипторам, как показано в примере 18.4. ...
Запись в стандартный поток вывода
Задача Необходимо записать в стандартный поток вывода. Решение Примените echo или print: print "Where did my pastrami sandwich go?"; echo "It went into my stomach."; Обсуждение В то время как print() – это функция, ec...
Непосредственная модификация файла без временной копии
Задача Необходимо изменить файл, не создавая временный файл для сохранения изменений. Решение Прочитайте файл в память, выполните изменения и перезапишите файл. Откройте файл в режиме r+ (в Windows rb+, если необходимо) и отк...
Обработка каждого слова в файле
Задача Необходимо что-нибудь сделать с каждым словом, находящимся в файле. Решение Прочитайте каждую строку с помощью функции fgets(), разделите строку на слова и обработайте каждое слово: $fh = fopen('great-american-novel...
Обработка текстовых полей переменной длины
Задача Необходимо прочитать из файла разграниченные текстовые поля. Например, есть программа базы данных, построчно выводящая записи, в которых поля разделены символами табуляции, и требуется преобразовать эти данные в массив. ...
Обработка файла по строкам или абзацам в обратном направлении
Задача Необходимо осуществить некие действия над каждой строкой файла, начиная с конца. Например, нетрудно добавить новую запись гостевой книги в конец файла, открыв его в режиме добавления, но при показе требуется сначала отобра...
Открытие удаленного файла
Задача Необходимо открыть файл, доступ к которому осуществляется посредством HTTP или FTP. Решение Передайте URL файла функции fopen(): $fh = fopen('http://www.example.com/robots.txt','r') or die($php_errormsg); Обсужде...
Передача входной информации в программу
Задача Пусть надо передать внешней программе входную информацию из сценария на PHP. Например, при работе с базой данных вам потребовалось запустить внешнюю программу для индексирования текста, и этой программе надо передать текст...
Подсчет строк, абзацев или записей в файле
Задача Необходимо определить количество строк, абзацев или записей в файле. Решение Для подсчета строк применяется функция fgets(). Она читает одну строку за раз, поэтому нетрудно подсчитать, сколько раз она вызывается, пока ...
Преобразование метасимволов среды в escape-последовательности
Задача Необходимо включить в командную строку внешние данные, например передать в программу пользовательский ввод в качестве аргумента, но для предотвращения всяких неожиданностей требуется преобразовать специальные символы в esc...
Программа: Unzip
Программа unzip.php, показанная в примере 18.5, извлекает файлы из ZIP-архива. Она основана на функции pc_mkdir_parents(), которая определена в рецепте 19.10. Программа также требует установки PHP-расширения zip. Документацию по р...
Рандомизация всех строк в файле
Задача Необходимо выполнить случайную перестановку всех строк в файле. Например, есть файл забавных цитат, и вы хотите выбрать из них случайную. Решение Прочитайте все строки файла в массив с помощью функции file(), а зате...
Сброс вывода в файл
Задача Необходимо принудительно сбросить всю информацию из буфера в файл с нужным дескриптором. Решение Вызовите функцию fflush(): fwrite($fh,'There are twelve pumpkins in my house.'); fflush($fh); Это гарантирует, что...
Создание временного файла
Задача Требуется файл для временного хранения данных. Решение Вызывайте функцию tmpfile(), если файл должен храниться только во время выполнения сценария: $temp_fh = tmpfile(); // записываем некоторые данные во временный ...
Создание или открытие локального файла
Задача Необходимо открыть локальный файл, чтобы читать из него данные, или записывать данные в этот файл. Решение Это делается при помощи функции fopen(): $fh = fopen('file.txt','r') or die("can't open file.txt: $php_error...
Удаление из файла последней строки
Задача Необходимо удалить последнюю строку файла. Например, кто-то добавил комментарий в конце вашей гостевой книги, который вам не нравится, поэтому вы хотите от него избавиться. Решение Если файл маленький, то можно прочита...
Чтение и запись сжатых файлов
Задача Необходимо прочитать или записать сжатые файлы. Решение Для чтения или записи файлов gzip применяется расширение PHP zlib. Чтобы прочитать сжатый файл: $zh = gzopen('file.gz','r') or die("can't open: $php_errormsg")...
Чтение из стандартного потока ввода
Задача Необходимо читать из стандартного потока ввода. Решение Для открытия php://stdin применяется функция fopen(): $fh = fopen('php://stdin','r') or die($php_errormsg); while($s = fgets($fh,1024)) { print "You typed: $...

Страницы: 1 2