(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_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) } } }