A classe EvIo

(PECL ev >= 0.2.0)

Introdução

Os observadores EvIo verificam se um descritor de arquivo (ou soquete, ou um fluxo convertível em descritor de arquivo numérico) pode ser lido ou escrito em cada iteração do laço de eventos, ou, mais precisamente, quando a leitura não bloquearia o processo e a escrita seria pelo menos capaz de gravar alguns dados. Esse comportamento é chamado de acionamento de nível porque os eventos continuam sendo recebidos enquanto a condição persistir. Para parar de receber eventos, basta parar o observador.

O número de observadores de eventos de leitura e/ou gravação por fd é ilimitado. Definir todos os descritores de arquivo para o modo sem bloqueio também costuma ser uma boa ideia (mas não é obrigatório).

Outra coisa a observar é que é muito fácil receber falsas notificações de prontidão, ou seja, o retorno de chamada pode ser chamado com Ev::READ mas um read() subsequente irá na verdade, bloquear porque não há dados. É muito fácil entrar nesta situação. Portanto, é melhor sempre usar E/S sem bloqueio: Um read() extra retornando EAGAIN (ou similar) é muito preferível a um programa suspenso até que alguns dados cheguem.

Se por algum motivo for impossível executar o fd no modo sem bloqueio, teste novamente separadamente se um descritor de arquivo está realmente pronto. Algumas pessoas usam SIGALRM e um temporizador de intervalo, apenas para ter certeza de que o thry não bloqueará infinitamente.

Sempre considere usar o modo sem bloqueio.

Resumo da classe

class EvIo extends EvWatcher {
/* Propriedades */
public $fd;
public $events;
/* Propriedades herdadas */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Métodos */
public __construct(
     mixed $fd ,
     int $events ,
     callable $callback ,
     mixed $data = ?,
     int $priority = ?
)
final public static createStopped(
     mixed $fd ,
     int $events ,
     callable $callback ,
     mixed $data = null ,
     int $priority = 0
): EvIo
public set( mixed $fd , int $events ): void
/* Métodos herdados */
public EvWatcher::feed( int $revents ): void
public EvWatcher::invoke( int $revents ): void
public EvWatcher::keepalive( bool $value = ?): bool
public EvWatcher::setCallback( callable $callback ): void
}

Propriedades

fd

events

Índice

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top