(PECL eio >= 0.0.1dev)
eio_readdir — Читает содержимое директории
Читает содержимое директории (посредством системных вызовов
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)
'names' - массив имён директории
'dents' - массив структур типа struct
eio_dirent, каждая из которых представляется массивом с ключами:
'name' - имя директории;
'type' - одна из констант EIO_DT_*;
'inode' - номер узла inode, если доступен, либо пустое
значение;
EIO_READDIR_DIRS_FIRST
(int)
EIO_READDIR_STAT_ORDER
(int)
stat) каждого из
объектов. Если полученный список имён предполагается передавать в функцию
stat(), порядок следования имён обеспечит наиболее быструю
работу функции.
EIO_READDIR_FOUND_UNKNOWN
(int)
Типы узлов:
EIO_DT_UNKNOWN
(int)
EIO_DT_FIFO
(int)
EIO_DT_CHR
(int)
EIO_DT_MPC
(int)
EIO_DT_DIR
(int)
EIO_DT_NAM
(int)
EIO_DT_BLK
(int)
EIO_DT_MPB
(int)
EIO_DT_REG
(int)
EIO_DT_NWK
(int)
EIO_DT_CMP
(int)
EIO_DT_LNK
(int)
EIO_DT_SOCK
(int)
EIO_DT_DOOR
(int)
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)
}
}
}