eio_open

(PECL eio >= 0.0.1dev)

eio_openAbrir un fichero

Descripción

eio_open ( string $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

Parámetros

path

Ruta del archivo a abrir.

Advertencia

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.

Valores devueltos

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.

Ejemplos

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($resultadoEIO_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_tempEIO_O_CREAT EIO_O_RDWREIO_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)

Ver también