PHP Conference Kansai 2025

La clase EvStat

(PECL ev >= 0.2.0)

Introducción

La clase EvStat supervisa un fichero del sistema de ficheros para detectar cualquier modificación de sus atributos. Invoca el comando stat() en esta ruta, a intervalos regulares (o cuando el sistema operativo notifica una modificación) y verifica si ha sido modificado desde la última vez, llamando a la función de retrollamada si es el caso.

La ruta no necesita existir: el cambio de "la ruta existe" a "la ruta no existe" es una modificación de estado como cualquier otra. La condición "la ruta no existe" está indicada por el valor 0 del elemento 'nlink' (devolvido por el método EvStat::attr()).

La ruta no debe terminar con un slash, ni contener componentes especiales como '.' o ... La ruta debe ser absoluta: si es relativa, y el directorio de trabajo cambia, entonces el comportamiento será indefinido.

Dado que no hay una interfaz de notificación de cambios portable, la implementación portable simplemente invoca el comando stat() en la ruta para verificar las modificaciones. Para este caso, un intervalo regular puede ser especificado. Si se especifica, un intervalo de 0.0 (altamente recomendado) entonces un valor predeterminado no especificado será utilizado (alrededor de 5 segundos, y puede ser modificado dinámicamente). libev también impondrá un intervalo mínimo que actualmente está alrededor de 0.1, lo cual es ampliamente suficiente.

Este tipo de observador no está previsto para un gran número de observadores EvStat, dado que incluso con las notificaciones del sistema sobre modificaciones soportadas por el sistema operativo, esto consume muchos recursos.

Sinopsis de la Clase

class EvStat extends EvWatcher {
/* Propiedades */
public $path;
public $interval;
/* Propiedades heredadas */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Métodos */
public __construct(
     string $path ,
     float $interval ,
     callable $callback ,
     mixed $data = null ,
     int $priority = 0
)
public attr(): array
final public static createStopped(
     string $path ,
     float $interval ,
     callable $callback ,
     mixed $data = null ,
     int $priority = 0
): void
public prev(): void
public set( string $path , float $interval ): void
public stat(): bool
/* Métodos heredados */
public EvWatcher::feed( int $revents ): void
public EvWatcher::invoke( int $revents ): void
public EvWatcher::keepalive( bool $value = ?): bool
public EvWatcher::setCallback( callable $callback ): void
}

Propiedades

interval

Solo lectura. La rapidez con la que una modificación debe ser detectada; normalmente, debe valer 0.0 para dejar que libev elija un buen valor.

path

Solo lectura. La ruta hacia el fichero del cual se desean supervisar las modificaciones de estado.

Tabla de contenidos

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top