PHP Conference Nagoya 2025

A classe EventBase

(PECL event >= 1.2.6-beta)

Introdução

A classe EventBase representa a estrutura base de eventos do libevent. Ele contém um conjunto de eventos e pode pesquisar para determinar quais eventos estão ativos.

Cada base de eventos tem um método, ou um backend que usa para determinar quais eventos estão prontos. Os métodos reconhecidos são: select , poll , epoll , kqueue , devpoll , evport e win32 .

Para configurar a base de eventos a ser usada ou evitar backend específico, a classe EventConfig pode ser usada.

Aviso

NÃO destrua o objeto EventBase enquanto os recursos dos objetos Event associados não forem liberados. Caso contrário, levará a resultados imprevisíveis!

Resumo da classe

final class EventBase {
/* Constantes */
const int LOOP_ONCE = 1;
const int LOOP_NONBLOCK = 2;
const int NOLOCK = 1;
const int STARTUP_IOCP = 4;
const int NO_CACHE_TIME = 8;
/* Métodos */
public __construct( EventConfig $cfg = ?)
public dispatch(): void
public exit( float $timeout = ?): bool
public free(): void
public getFeatures(): int
public getMethod(): string
public gotExit(): bool
public gotStop(): bool
public loop( int $flags = ?): bool
public priorityInit( int $n_priorities ): bool
public reInit(): bool
public stop(): bool
}

Constantes predefinidas

EventBase::LOOP_ONCE

Opção usada com o método EventBase::loop() que significa: "bloquear até que libevent tenha um evento ativo e então sair quando todos os eventos ativos tiverem seus retornos de chamada executados".

EventBase::LOOP_NONBLOCK

Opção usada com o método EventBase::loop() que significa: "não bloquear: veja quais eventos estão prontos agora, execute os retornos de chamada dos de maior prioridade e depois saia".

EventBase::NOLOCK

Opção de configuração. Não aloque um bloqueio para a base de eventos, mesmo que tenhamos um bloqueio configurado".

EventBase::STARTUP_IOCP

Opção de configuração somente do Windows. Ativa o despachante IOCP na inicialização.

EventBase::NO_CACHE_TIME

Opção de configuração. Em vez de verificar a hora atual sempre que o loop de eventos estiver pronto para executar retornos de chamada de tempo limite, verifique após cada retorno de chamada de tempo limite.

EventBase::EPOLL_USE_CHANGELIST

Se estivermos usando o backend epoll, este sinalizador diz que é seguro usar o código interno da lista de alterações do Libevent para agrupar adições e exclusões, a fim de tentar fazer o menor número possível de syscalls.

Definir esta opção pode tornar o código executado mais rápido, mas pode desencadear um bug do Linux: não é seguro usar este sinalizador se houver algum fds clonado por dup() ou suas variantes. Fazer isso produzirá bugs estranhos e difíceis de diagnosticar.

Esta opção também pode ser ativada configurando a variável de ambiente EVENT_EPOLL_USE_CHANGELIST.

Esta opção não tem efeito se alguém acabar usando um backend diferente de epoll .

Í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