eio_readdir

(PECL eio >= 0.0.1dev)

eio_readdir读取整个目录

描述

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

读取整个目录(通过 opendirreaddirclosedir 系统调用),并根据 flags 参数返回名称或 callback 函数的 result 参数中的数组。

参数

path

目录路径。

flags

EIO_READDIR_* 常量的组合。

pri

请求优先级:EIO_PRI_DEFAULTEIO_PRI_MINEIO_PRI_MAXnull。如果传递 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)
eio_readdir() 标志。如果指定,回调的结果参数将成为一个具有以下键的数组:'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)
未知节点类型(很常见)。需要进一步 stat()
EIO_DT_FIFO (int)
FIFO 节点类型
EIO_DT_CHR (int)
节点类型
EIO_DT_MPC (int)
多路复用字符设备(v7+一致)节点类型
EIO_DT_DIR (int)
目录节点类型
EIO_DT_NAM (int)
Xenix 特殊命名文件节点类型
EIO_DT_BLK (int)
节点类型
EIO_DT_MPB (int)
多路复用块设备(v7+一致)
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 门节点类型
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)
    }
  }
}
添加备注

用户贡献的备注

此页面没有用户贡献的备注。
To Top