eio_readdir
ディレクトリ全体を読み込む
説明
resource eio_readdir(
string $path
,
int $flags
,
int $pri
,
callable $callback
,
string $data
= NULL
)
パラメータ
-
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
を返します。
callback
関数の result
に設定される内容は flags
によって変わります。
-
EIO_READDIR_DENTS
(int)
-
eio_readdir のフラグ。指定すると、コールバックの result 引数が次のキーを持つ配列になります。
'names'
- ディレクトリ名の配列/
'dents'
- struct eio_dirent
風の配列で、
それぞれがさらに以下のキーを持ちます (
'name'
- ディレクトリ名/
'type'
- EIO_DT_* 定数のいずれか/
'inode'
- inode 番号。存在しない場合は不定
)
-
EIO_READDIR_DIRS_FIRST
(int)
-
このフラグを指定すると、ディレクトリをまず最初に返して
stat に最適化した順に返します。
-
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+coherent) ノード型
-
EIO_DT_DIR
(int)
-
ディレクトリノード型
-
EIO_DT_NAM
(int)
-
Xenix 名前付きファイルノード型
-
EIO_DT_BLK
(int)
-
ノード型
-
EIO_DT_MPB
(int)
-
多重化ブロックデバイス (v7+coherent)
-
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 door ノード型
-
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)
}
}
}