PHP 8.6.0 Beta 1 is available for testing

eio_readdir

(PECL eio >= 0.0.1dev)

eio_readdir Читает содержимое директории

Описание

function eio_readdir(
string $path,
int $flags,
int $pri,
callable $callback,
string $data = NULL
): resource

Читает содержимое директории (посредством системных вызовов opendir, readdir и closedir) и либо возвращает имена файлов, либо передаёт массив в качестве аргумента result в функцию callback. Поведение метода зависит от значения параметра flags.

Список параметров

path
Путь к директории.
flags
Комбинация констант EIO_READDIR_*.
pri
Приоритет запросов: EIO_PRI_DEFAULT , EIO_PRI_MIN , EIO_PRI_MAX , или null . Если передан null , то pri устанавливается в EIO_PRI_DEFAULT .
callback

Функция callback вызывается после выполнения запроса. Функция должна соответствовать следующему прототипу:

void callback(mixed $data, int $result[, resource $req]);
data
Пользовательские данные запроса.
result
Значение результата конкретного запроса; обычно это значение, которое вернул системный вызов, который соответствует запросу.
req
Необязательный ресурс запроса, с которым работают функции наподобие eio_get_last_error() .

data
Данные, которые необходимо передать функции callback.

Возвращаемые значения

eio_readdir() возвращает ресурс запроса в случае успешного выполнения или false , если возникла ошибка. Также может задавать значение аргумента result функции callback в зависимости от значения параметра flags:

EIO_READDIR_DENTS (int )
Флаг eio_readdir(). Если задан, в качестве аргумента callback-функции будет передаваться массив со следующими ключами: 'names' - массив имён директории 'dents' - массив структур типа struct eio_dirent, каждая из которых представляется массивом с ключами: 'name' - имя директории; 'type' - одна из констант EIO_DT_*; 'inode' - номер узла inode, если доступен, либо пустое значение;
EIO_READDIR_DIRS_FIRST (int )
Если этот флаг задан, первыми будут возвращаться имена директорий, затем имена файлов. Порядок следования имён в каждой группе будет оптимальным для применения функции stat.
EIO_READDIR_STAT_ORDER (int )
Если этот флаг задан, имена файлов и директорий будут возвращаться в порядке, удобном для сбора статистики (stat) каждого из объектов. Если полученный список имён предполагается передавать в функцию stat() , порядок следования имён обеспечит наиболее быструю работу функции.
EIO_READDIR_FOUND_UNKNOWN (int )

Типы узлов:

EIO_DT_UNKNOWN (int )
Неизвестный тип узла (очень часто). Необходима обработка функцией stat() .
EIO_DT_FIFO (int )
Тип узла - FIFO
EIO_DT_CHR (int )
Тип узла
EIO_DT_MPC (int )
Тип узла - составное символьное устройство (v7+coherent)
EIO_DT_DIR (int )
Тип узла - директория
EIO_DT_NAM (int )
Тип узла - файл со специальным Xenix наименованием
EIO_DT_BLK (int )
Тип узла
EIO_DT_MPB (int )
Составное блочное устройство (v7+coherent)
EIO_DT_REG (int )
Тип узла
EIO_DT_NWK (int )
EIO_DT_CMP (int )
Специальный тип узла для сетей HP-UX
EIO_DT_LNK (int )
Тип узла - ссылка
EIO_DT_SOCK (int )
Тип узла - сокет
EIO_DT_DOOR (int )
Тип узла - Solaris door
EIO_DT_WHT (int )
Тип узла
EIO_DT_MAX (int )
Максимальное значение типа узла

Примеры

Пример #1 Пример использования eio_readdir()

<?php
/* Вызывается, когда отработает eio_readdir() */
function my_readdir_callback($data, $result) {
 echo "Вызвана функция ", __FUNCTION__, "\n";
 echo "данные: "; var_dump($data);
 echo "результат: "; var_dump($result);
 echo "\n";
}
eio_readdir("/var/spool/news", EIO_READDIR_STAT_ORDER | EIO_READDIR_DIRS_FIRST,
 EIO_PRI_DEFAULT, "my_readdir_callback");
eio_event_loop();
?>

Вывод приведённого примера будет похож на:

Вызвана функция my_readdir_callback
данные: NULL
результат: array(2) {
 ["names"]=>
 array(7) {
 [0]=>
 string(7) "archive"
 [1]=>
 string(8) "articles"
 [2]=>
 string(8) "incoming"
 [3]=>
 string(7) "innfeed"
 [4]=>
 string(8) "outgoing"
 [5]=>
 string(8) "overview"
 [6]=>
 string(3) "tmp"
 }
 ["dents"]=>
 array(7) {
 [0]=>
 array(3)
 {
 ["name"]=>
 string(7)
 "archive"
 ["type"]=>
 int(4)
 ["inode"]=>
 int(393265)
 }
 [1]=>
 array(3)
 {
 ["name"]=>
 string(8)
 "articles"
 ["type"]=>
 int(4)
 ["inode"]=>
 int(393266)
 }
 [2]=>
 array(3)
 {
 ["name"]=>
 string(8)
 "incoming"
 ["type"]=>
 int(4)
 ["inode"]=>
 int(393267)
 }
 [3]=>
 array(3)
 {
 ["name"]=>
 string(7)
 "innfeed"
 ["type"]=>
 int(4)
 ["inode"]=>
 int(393269)
 }
 [4]=>
 array(3)
 {
 ["name"]=>
 string(8)
 "outgoing"
 ["type"]=>
 int(4)
 ["inode"]=>
 int(393270)
 }
 [5]=>
 array(3)
 {
 ["name"]=>
 string(8)
 "overview"
 ["type"]=>
 int(4)
 ["inode"]=>
 int(393271)
 }
 [6]=>
 array(3)
 {
 ["name"]=>
 string(3)
 "tmp"
 ["type"]=>
 int(4)
 ["inode"]=>
 int(393272)
 }
 }
}

Нашли ошибку?

ИнструкцияИсправлениеСообщение об ошибке
+Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы

AltStyle によって変換されたページ (->オリジナル) /