(PECL eio >= 0.0.1dev)
eio_readdir — 读取整个目录
读取整个目录(通过 opendir
、readdir
和 closedir
系统调用),并根据 flags
参数返回名称或 callback
函数的 result
参数中的数组。
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
。根据 flags
设置 callback
函数的 result
参数
EIO_READDIR_DENTS
(int)'names'
- 目录名称数组 'dents'
- struct eio_dirent
类数组的数组,每个数组都具有以下键:'name'
- 目录名称;'type'
- EIO_DT_* 常量之一;'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__, " called\n";
echo "data: "; var_dump($data);
echo "result: "; 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 called data: NULL result: 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) } } }