boolean gzrewind(resource file)
Функция gzrewind перемещает внутренний указатель файла PHP назад в начало сжатого файла. Она возвращает значение TRUE при успешном завершении и значение FALSE при ошибке.
integer gzseek(resource file, integer offset)
Эта функция работает аналогично функции fseek, но со сжатыми файлами.
integer gztell(resource file)
Получив дескриптор файла, функция gztell возвращает смещение внутреннего указателя файла PHP.
gzwrite
Функция gzwrite является псевдонимом функции gzputs.
integer readgzfile(string filename, boolean use_include_path)
Функция readgzfile (листинг 9.56) аналогична функции readfile, за исключением того, что она работает со сжатыми файлами. Файл декомпрессируется на лету и непосредственно отправляется в браузер.
Листинг 9.56. Функция readgzfile
<?php
//вывести в браузере содержимое файла //data.gz в сжатом виде readgzfile("data.gz");
?>
9.3. Прямой ввод-вывод
PHP поддерживает операции ввода-вывода и более низкого уровня, чем те, которые описывались в предыдущих разделах. Дескрипторы файлов, используемые с этими функциями, нельзя использовать для работы с функциями низкого уровня. Использование прямого ввода-вывода для обычных файлов не очень привлекательно, так как работать с функциями высокого уровня всегда удобнее. Прямой ввод-вывод необходим, когда появляется потребность производить запись на такие устройства, как терминалы, параллельные и последовательные порты. Необходимо помнить и о вопросах предоставления прав доступа. Например, обычно Web-сервер не должен иметь право на прямую запись в последовательный порт.
Расширение, работающее с прямым вводом-выводом, разработал Стерлинг Хьюз (Sterling Hughes).
dio_close(resource file)
Функция dio_close закрывает открытый дескриптор файла.
resource dio_fcntl(resource file, integer command, integer additional_args)
Функция dio_fcntl выполняет различные операции с дескриптором открытого файла. Возвращаемые функцией значение и необязательный аргумент additional_args определяются командой chosen (табл. 9.10). В табл. 9.11 приведены элементы, которые задаются в аргументе additional_args.
Таблица 9.10. Команды diofcntl
Команда Описание
F_DUPFD Найти дескриптор файла с минимальным номером, который больше номера, заданного аргументом additional_args, создать копию заданного дескриптора файла и вернуть ее
F_GETLK Получить состояние блокировки. Возвращается ассоциативный массив
F_SETFL Задать флаги для дескриптора файла. Допустимые значения O_APPEND, O_NONBLOCK или O_ASYNC
F_SETLK Сделать попытку установить или очистить блокировку файла. Если блокировку обеспечивает другой процесс, возвращается значение -1
F_SETLKW Сделать попытку установить или очистить блокировку файла. Если блокировку обеспечивает другой процесс, ожидать его завершения
resource dio_open(string filename, integer flags, integer mode)
Функция dio_open (листинг 9.57) открывает файл и возвращает дескриптор файла. Аргумент flags должен включать один из флагов, приведенных в табл. 9.12. Их можно комбинировать по желанию с флагами, приведенными в табл. 9.13, воспользовавшись оператором "побитовое ИЛИ" (|). Необязательный аргумент mode устанавливает разрешения для файла, определенные командой chmod.
Листинг 9.57. Функция dioopen
<?php
//открыть файл для добавления в синхронном режиме $fp = dio_open('/tmp/data.txt',
O_WRONLY | O_CREAT | O_APPEND | O_SYNC,
0666); if($fp == -1)
{
print('файл невозможно открыть.'); exit();
}
// записать определенные случайные данные for($i=0; $i < 10; $i++)
{
dio_write($fp, "Тест: " . rand(1,100) . "n");
}
//Закрыть dio_close($fp);
?>
string dio_read(resource file, integer length)
Функция dio_read (листинг 9.58) возвращает строку, прочитанную из дескриптора открытого файла, созданного функцией dio_open. Необязательный аргумент length задает количество прочитанных байтов. По умолчанию его значение равно 1024.
j Листинг 9.58. Функция dio read_
<?php
//Открыть устройство /dev/random для чтения $fp = dio_open('/dev/random', O_RDONLY);
if($fp == -1)
{
print('Невозможно открыть /dev/random'); exit();
}
//прочитать 4 байта $data = dio_read($fp, 4);
//преобразовать двоичное представление числа в целое
$n = 0;
for ($i=0; $i < 4; $i++)
{
//принять целое для этого байта $p = ord(substr($data, $i, 1)); //умножить ее на текущую степень числа 256
$n += $p * pow(256, $i);
}
// распечатать случайное число
print($n);
// закрыть
dio_close($fp);
?>
dio_seek(resource file, integer position, integer from)
Функция dio_seek перемещает указатель файла на заданную позицию. Необязательный аргумент from может иметь значение SEEK_SET, SEEK_CUR или SEEK_END (см. описание функции fseek).
array dio_stat(resource file)
Функция dio_stat возвращает ассоциативный массив, соответствующий данным, возвращенным функцией stat. Для его работы требуется дескриптор файла, созданный dio_open.
dio_tcsetattr(resource file, array options)
Функция dio_tcsetattr предназначается для установки терминальных атрибутов для дескриптора файла, созданного функцией dio_open. В табл. 9.14 описывается массив options.
boolean dio_truncate(resource file, integer length)
Функция dio_truncate усекает файл до указанной длины. Если длина файла короче указанной, оставить его как есть или дополнить (по усмотрению операционной системы) до указанной длины символами NULL.
integer dio_write(resource file, string data, integer length)
Функция dio_write записывает заданные данные в открытый файл. Если установлен необязательный аргумент length, он устанавливает максимальное количество записанных байтов.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
PHP. Операционная система. Часть Семнадцатая.
28-12-2009
<< Предыдущая статья | Следующая статья >> |
PHP. Операционная система. Часть Шестнадцатая. | PHP. Операционная система. Часть Восемнадцатая. |