(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_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__, " 呼叫\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 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)
}
}
}