(PECL eio >= 0.0.1dev)
eio_open — Abrir un fichero
$path
, int $flags
, int $mode
, int $pri
, callable $callback
[, mixed $data
= NULL
] ) : resource
eio_open() abre el archivo especificado por
path
en el modo de acceso mode
con
path
Ruta del archivo a abrir.
En algunas SAPIs (p.ej. PHP-FPM) podría fallar si no se especifica la ruta completa.
flags
Una de las constantes EIO_O_*, o sus
combinaciones. Las constantes EIO_O_* tienen el mismo
significado que sus correspondientes homónimas O_*
definidas en el fichero de cabecera C fnctl.h. Por defecto es
EIO_O_RDWR
.
mode
Una de las constantes EIO_S_I*, o sus combinaciones (mediante el operador a nivel de bits OR). Las constantes tienen el mismo significado que sus homónimas S_I* definidas en el archivo de cabecera C » sys/stat.h. Necesario si se crea un fichero. En otro caso es ignorado.
pri
La prioridad de petición: EIO_PRI_DEFAULT
, EIO_PRI_MIN
, EIO_PRI_MAX
, o NULL
.
Si se pasa NULL
, pri
es establecido internamente a
EIO_PRI_DEFAULT
.
callback
La función callback
es llamada cuando la petición está hecha.
Debería seguir el siguiente prototipo:
void callback(mixed $data, int $result[, resource $req]);
data
son datos personalizados pasados a la petición.
result
es el valor del resultado específico de la petición; básicamente, el valor devuelto por la correspondiente llamada al sistema.
req
es el recurso de petición opcional que puede usarse con funciones como eio_get_last_error()
data
Variable arbitraria pasada a callback
.
eio_open() devuelve un descriptor de fichero en
el argumento result
de callback
en caso de éxito; de otro modo, result
es igual a -1
.
Ejemplo #1 Ejemplo de eio_open()
<?php
$nombre_fichero_temp = "eio-fichero-temp.tmp";
/* Se llama cuando eio_close() finaliza */
function my_close_cb($datos, $resultado) {
// Cero indica éxito
var_dump($resultado == 0);
@unlink($datos);
}
/* Se llama cuando eio_open() finaliza */
function mi_llamada_retorno_fichero_abierto($datos, $resultado) {
// $resultado debería contener el descriptor de fichero
var_dump($resultado > 0);
if ($resultado > 0) {
// Cerrar el fichero
eio_close($resultado, EIO_PRI_DEFAULT, "my_close_cb", $datos);
eio_event_loop();
}
}
// Crear un nuevo fichero para lectura y escritura
// Denegar al grupo y a otros realizar cualquier cosa con ese fichero
eio_open($nombre_fichero_temp, EIO_O_CREAT | EIO_O_RDWR, EIO_S_IRUSR | EIO_S_IWUSR,
EIO_PRI_DEFAULT, "mi_llamada_retorno_fichero_abierto", $nombre_fichero_temp);
eio_event_loop();
?>
El resultado del ejemplo sería algo similar a:
bool(true) bool(true)