Eio eio_readdir

(PECL eio >= 0.0.1dev)

eio_readdir — 전체 디렉토리를 읽습니다.


설명

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

전체 디렉토리(opendir, readdirclosedir 시스템 호출을 통해)를 읽고 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_READDIR_DENTS (int)
eio_readdir() 플래그. 지정된 경우, 콜백의 결과 인수는 다음 키가 있는 배열이 됩니다. 'names' - 디렉토리 이름 배열 'dents' - 각각 다음 키를 갖는 struct eio_dirent-like 배열 배열: 'name' - 디렉토리 이름; 'type' - EIO_DT_* 상수 중 하나. 'inode' - inode 번호(사용 가능한 경우), 그렇지 않은 경우 지정되지 않음.
EIO_READDIR_DIRS_FIRST (int)
이 플래그가 지정되면 이름은 최적의 상태 순서로 가능한 디렉토리가 먼저 오는 순서로 반환됩니다.
EIO_READDIR_STAT_ORDER (int)
When this flag is specified, then the names will be returned in an order suitable for stat'ing each one. 주어진 디렉토리에 있는 모든 파일을 stat()할 계획이라면 반환된 순서가 가장 빠를 것입니다.
EIO_READDIR_FOUND_UNKNOWN (int)

노드 유형:

EIO_DT_UNKNOWN (int)
알 수 없는 노드 유형(매우 일반적). 추가 stat()이 필요합니다.
EIO_DT_FIFO (int)
FIFO 노드 유형
EIO_DT_CHR (int)
Node type
EIO_DT_MPC (int)
다중화 문자 장치(v7+coherent) 노드 유형
EIO_DT_DIR (int)
디렉토리 노드 유형
EIO_DT_NAM (int)
Xenix 특수 명명된 파일 노드 유형
EIO_DT_BLK (int)
Node type
EIO_DT_MPB (int)
다중 블록 장치(v7+코히어런트)
EIO_DT_REG (int)
Node type
EIO_DT_NWK (int)
EIO_DT_CMP (int)
HP-UX 네트워크 특수 노드 유형
EIO_DT_LNK (int)
Link node type
EIO_DT_SOCK (int)
Socket node type
EIO_DT_DOOR (int)
Solaris door node type
EIO_DT_WHT (int)
Node type
EIO_DT_MAX (int)
Highest node type value

Examples

예제 #1 eio_readdir() 예제

                  
<?php
/* Is called when eio_readdir() finishes */
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)
    }
  }
}