(PECL eio >= 0.0.1dev)
eio_readdir — Lê um diretório inteiro
Lê um diretório inteiro (através das chamadas de sistema opendir
, readdir
e
closedir
) e retorna os nomes ou um array no argumento
result
da função callback
,
dependendo do argumento flags
.
path
Caminho do diretório.
flags
Combinação de constantes EIO_READDIR_*.
pri
A prioridade da requisição: EIO_PRI_DEFAULT
, EIO_PRI_MIN
, EIO_PRI_MAX
ou null
.
Se null
for passado, o parâmetro pri
internamente será definido como
EIO_PRI_DEFAULT
.
callback
A função callback
é chamada quando a requisição é concluída.
Ela deve corresponder ao seguinte protótipo:
void callback(mixed $data, int $result[, resource $req]);
data
são dados personalizados passados para a requisição.
result
valor de resultado específico da requisição; basicamente, o valor retornado pela chamada de sistema correspondente.
req
é um recurso de requisição opcional que pode ser usado com funções como eio_get_last_error().
data
Variável arbitrária passada para callback
.
eio_readdir() retorna o recurso da requisição em caso de sucesso, ou false
em caso de falha.
Define o argumento result
da função
callback
de acordo com
flags
:
EIO_READDIR_DENTS
(int)
'names'
- array de nomes de diretório
'dents'
- array similares a struct
eio_dirent
com as chaves a seguir, cada um:
'name'
- o nome do diretório;
'type'
- uma das constantes
EIO_DT_*;
'inode'
- o número do inode, se disponível, caso contrário
não especificado;
EIO_READDIR_DIRS_FIRST
(int)
EIO_READDIR_STAT_ORDER
(int)
stat
) de cada um. Ao planejar a obteção de informação
(stat()) de todos os arquivos em um determinado diretório, a
ordem retornada provavelmente será a mais
rápida.
EIO_READDIR_FOUND_UNKNOWN
(int)
Tipos de nó:
EIO_DT_UNKNOWN
(int)
EIO_DT_FIFO
(int)
EIO_DT_CHR
(int)
EIO_DT_MPC
(int)
EIO_DT_DIR
(int)
EIO_DT_NAM
(int)
EIO_DT_BLK
(int)
EIO_DT_MPB
(int)
EIO_DT_REG
(int)
EIO_DT_NWK
(int)
EIO_DT_CMP
(int)
EIO_DT_LNK
(int)
EIO_DT_SOCK
(int)
EIO_DT_DOOR
(int)
EIO_DT_WHT
(int)
EIO_DT_MAX
(int)
Exemplo #1 Exemplo de eio_readdir()
<?php
/* Função chamada quando eio_readdir() termina */
function my_readdir_callback($data, $result) {
echo __FUNCTION__, " chamada\n";
echo "dados: "; var_dump($data);
echo "resultado: "; 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();
?>
O exemplo acima produzirá algo semelhante a:
my_readdir_callback chamada dados: NULL resultado: 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) } } }