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, он устанавливает максимальное количество записанных байтов.