(PECL eio >= 0.0.1dev)
eio_readdir — 读取整个目录
读取整个目录(通过 opendir、readdir 和 closedir 系统调用),并根据 flags 参数返回名称或 callback 函数的 result 参数中的数组。
path目录路径。
flagsEIO_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 (整数)'names' - 目录名称数组 'dents' - struct eio_dirent 类数组的数组,每个数组都包含以下键:'name' - 目录名称;'type' - EIO_DT_* 常量之一;'inode' - inode 编号(如果可用,否则未指定);
EIO_READDIR_DIRS_FIRST (整数)EIO_READDIR_STAT_ORDER (整数)stat 每个名称的顺序返回。当计划 stat() 给定目录中的所有文件时,返回的顺序可能是最快的。
EIO_READDIR_FOUND_UNKNOWN (整数)节点类型
EIO_DT_UNKNOWN (整数)EIO_DT_FIFO (整数)EIO_DT_CHR (整数)EIO_DT_MPC (整数)EIO_DT_DIR (整数)EIO_DT_NAM (整数)EIO_DT_BLK (整数)EIO_DT_MPB (整数)EIO_DT_REG (整数)EIO_DT_NWK (整数)EIO_DT_CMP (整数)EIO_DT_LNK (整数)EIO_DT_SOCK (整数)EIO_DT_DOOR (整数)EIO_DT_WHT (整数)EIO_DT_MAX (整数)示例 #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)
}
}
}