eio_readdir - Читает содержимое директории
Вернуться к: Eio Функции
eio_readdir
(PECL eio >= 0.0.1dev)
eio_readdir — Читает содержимое директории
Описание
$path
, int $flags
, int $pri
, callable $callback
[, string $data = NULL
] )
Читает содержимое директории (посредством системных вызовов
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(integer) - Флаг eio_readdir(). Если задан, в качестве аргумента callback-функции будет передаваться массив со следующими ключами: 'names' - массив имен директории 'dents' - массив структур типа struct eio_dirent, каждая из которых представляется массивом с ключами: 'name' - имя директории; 'type' - одна из констант EIO_DT_*; 'inode' - номер узла inode, если доступен, либо пустое значение;
-
EIO_READDIR_DIRS_FIRST(integer) - Если этот флаг задан, первыми будут возвращаться имена директорий, затем имена файлов. Порядок следования имен в каждой группе будет оптимальным для применения фукнции stat.
-
EIO_READDIR_STAT_ORDER(integer) - Если этот флаг задан, имена файлов и директорий будут возвращаеться в порядке, удобном для сбора статистики (stat) каждого из объектов. Если полученный список имен предполагается передавать в функцию stat(), порядок следования имен обеспечит наиболее быструю работу фукнции.
-
EIO_READDIR_FOUND_UNKNOWN(integer)
Node types:
-
EIO_DT_UNKNOWN(integer) - Неизвестный тип узла (очень часто). Необходима обработка функцией stat().
-
EIO_DT_FIFO(integer) - Тип узла - FIFO
-
EIO_DT_CHR(integer) - Тип узла
-
EIO_DT_MPC(integer) - Тип узла - составное символьное устройство (v7+coherent)
-
EIO_DT_DIR(integer) - Тип узла - директория
-
EIO_DT_NAM(integer) - Тип узла - файл со специальным Xenix наименованием
-
EIO_DT_BLK(integer) - Тип узла
-
EIO_DT_MPB(integer) - Составное блочное устройство (v7+coherent)
-
EIO_DT_REG(integer) - Тип узла
-
EIO_DT_NWK(integer) -
EIO_DT_CMP(integer) - Специальный тип узла для сетей HP-UX
-
EIO_DT_LNK(integer) - Тип узла - ссылка
-
EIO_DT_SOCK(integer) - Тип узла - сокет
-
EIO_DT_DOOR(integer) - Тип узла - Solaris door
-
EIO_DT_WHT(integer) - Тип узла
-
EIO_DT_MAX(integer) - Максимальное значение типа узла
Примеры
Пример #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)
}
}
}
Вернуться к: Eio Функции