La clase EvIo

(PECL ev >= 0.2.0)

Introducción

Los observadores EvIo verifican si un descriptor de fichero (o un socket, o un flujo que pueda ser convertido en descriptor de fichero numérico) está disponible para lectura o escritura en cada iteración del bucle de eventos, o, más precisamente, cuando la lectura no va a bloquear el proceso, y cuando la escritura va a permitir escribir datos. Este comportamiento se denomina nivel de activación porque los eventos se mantienen mientras persista la condición. Para detener la recepción de eventos, simplemente se debe detener el observador.

El número de eventos de lectura/escritura de los observadores por fd es ilimitado. Establecer todos los descriptores de ficheros en modo no bloqueante es generalmente una buena idea (aunque no es obligatorio).

Otra cosa a tener en cuenta es que es muy fácil recibir notificaciones falsas de sistema listo para lectura, es decir, la función de retrollamada puede ser llamada con Ev::READ pero una subsiguiente read() puede bloquearse debido a que no hay datos. Es muy simple encontrarse en esta situación. Por lo tanto, se recomienda siempre utilizar I/O no bloqueante: una read() adicional que devuelva EAGAIN (o similar) es preferible a un programa que espera la llegada de datos.

Si por alguna razón no es posible ejecutar el fd en modo no bloqueante, entonces, por separado, se debe volver a verificar si el descriptor de fichero está realmente listo. Algunos usuarios utilizan además SIGALRM y un temporizador de intervalo, solo para asegurarse de que no haya bloqueos infinitos.

Se recomienda siempre utilizar el modo no bloqueante.

Sinopsis de la Clase

class EvIo extends EvWatcher {
/* Propiedades */
public $fd;
public $events;
/* Propiedades heredadas */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Métodos */
public function __construct(
     mixed $fd ,
     int $events ,
     callable $callback ,
     mixed $data = ?,
     int $priority = ?
)
final public static function createStopped(
     mixed $fd ,
     int $events ,
     callable $callback ,
     mixed $data = null ,
     int $priority = 0
): EvIo
public function set( mixed $fd , int $events ): void
/* Métodos heredados */
public function EvWatcher::clear(): int
public function EvWatcher::feed( int $revents ): void
public function EvWatcher::getLoop(): EvLoop
public function EvWatcher::invoke( int $revents ): void
public function EvWatcher::keepalive( bool $value = ?): bool
public function EvWatcher::setCallback( callable $callback ): void
public function EvWatcher::start(): void
public function EvWatcher::stop(): void
}

Propiedades

fd
events

Tabla de contenidos

add a note

User Contributed Notes

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