(PECL ev >= 0.2.0)
Ev é uma classe estática que fornece acesso ao laço padrão e a algumas operações comuns.
Opções passadas para criar um laço:
Ev::FLAG_AUTO
      O valor das opções padrão
Ev::FLAG_NOENV
      
        Se esta opção for usada (ou o programa executar setuid ou setgid),
        libev
        não irá olhar para a variável de ambiente
        LIBEV_FLAGS.
        Caso contrário (por padrão),
        LIBEV_FLAGS
        substituirá as opções completamente se for encontrado. Útil para
        testes de desempenho e busca de bugs.
       
Ev::FLAG_FORKCHECK
      
        Faz com que a libev verifique se há uma bifurcação em cada iteração, em vez de chamar
        EvLoop::fork()
        manualmente. Isso funciona chamando
        getpid()
        em cada iteração do laço e, portanto, isso pode desacelerar o
        laço de eventos com muitas iterações de laço, mas geralmente não é
        perceptível. Esta configuração de opção não pode ser substituída ou especificada na
        variável de ambiente
        LIBEV_FLAGS.
       
Ev::FLAG_NOINOTIFY
      
        Quando esta opção é especificada,
        libev
        não tentará usar a API
        inotify
        para seus observadores
        » ev_stat.
        A opção pode ser útil para conservar descritores de arquivo inotify,
        caso contrário, cada laço usando observadores
        ev_stat
        consome um
        identificador
        inotify.
       
Ev::FLAG_SIGNALFD
      
        Quando esta opção for especificada,
        libev
        tentará usar a API
        signalfd
        para seus observadores
        » ev_signal
        (e
        » ev_child).
        Essa API fornece sinais de forma síncrona, o que a torna
        mais rápida e pode possibilitar a obtenção dos dados do sinal enfileirados.
        Também pode simplificar o tratamento de sinais com threads, desde que os sinais
        sejam bloqueados adequadamente nos threads.
        Signalfd
        não será usado por padrão.
       
Ev::FLAG_NOSIGMASK
      
        Quando esta opção for especificada,
        libev
        evitará modificar a máscara do sinal. Especificamente, isso significa ter
        certeza de que os sinais estão desbloqueados antes de recebê-los.
       
Esse comportamento é útil para manipulação de sinal personalizado ou manipulação de sinais apenas em threads específicos.
Opções passadas para Ev::run() ou EvLoop::run()
Ev::RUN_NOWAIT
      Significa que o laço de eventos irá procurar novos eventos, irá tratar esses eventos e quaisquer outros já pendentes, mas não irá esperar e bloquear o processo caso não haja eventos e retornará após uma iteração do laço. Às vezes, isso é útil para pesquisar e lidar com novos eventos ao fazer cálculos demorados, para manter o programa responsivo.
Ev::RUN_ONCE
      Significa que o laço de eventos procurará novos eventos (aguardando se necessário) e tratará desses e de quaisquer outros já pendentes. Ele bloqueará o processo até que pelo menos um novo evento chegue (que pode ser um evento interno ao próprio libev, portanto não há garantia de que um retorno de chamada registrado pelo usuário será chamado) e retornará após uma iteração do laço.
Opção passada para Ev::stop() , ou EvLoop::stop()
Ev::BREAK_CANCEL
      Cancele a operação de interrupção.
Ev::BREAK_ONE
      Faz com que a chamada Ev::run() (ou EvLoop::run()) mais interna retorne.
Ev::BREAK_ALL
      Faz com que todas as chamadas Ev::run() (ou EvLoop::run()) aninhadas retornem.
Prioridades do observador:
Ev::MINPRI
      Prioridade mínima permitida do observador.
Ev::MAXPRI
      Prioridade máxima permitida do observador.
Máscaras de bits de eventos (recebidos):
Ev::READ
      O descritor de arquivo no observador EvIo tornou-se legível.
Ev::WRITE
      O descritor de arquivo no observador EvIo tornou-se gravável.
Ev::TIMER
      O tempo do observador EvTimer expirou.
Ev::PERIODIC
      O tempo do observador EvPeriodic expirou.
Ev::SIGNAL
      Um sinal especificado em EvSignal::__construct() foi recebido.
Ev::CHILD
      
        O
        pid
        especificado em
        EvChild::__construct()
        recebeu uma alteração de status.
       
Ev::STAT
      O caminho especificado no observador EvStat alterou seus atributos.
Ev::IDLE
      O observador EvIdle funciona quando não há nada a fazer com outros observadores.
Ev::PREPARE
      Todos os observadores EvPrepare são invocados logo antes do início de Ev::run(). Assim, os observadores EvPrepare são os últimos observadores invocados antes do laço de eventos dormir ou pesquisar novos eventos.
Ev::CHECK
      Todos os observadores EvCheck são enfileirados logo após Ev::run() reunir os novos eventos, mas antes de enfileirar quaisquer retornos de chamada para quaisquer eventos recebidos. Assim, os observadores EvCheck serão invocados antes de quaisquer outros observadores de prioridade igual ou inferior dentro de uma iteração do laço de eventos.
Ev::EMBED
      O laço de eventos incorporado especificado no observador EvEmbed precisa de atenção.
Ev::CUSTOM
      
        Nunca enviado (ou usado de outra forma) pela
        própria libev,
        mas pode ser usado livremente por usuários da
        libev
        para sinalizar observadores
        (por exemplo, via
        EvWatcher::feed()).
       
Ev::ERROR
      
        Ocorreu um erro não especificado, o observador foi interrompido. Isto
        pode acontecer porque o observador não pôde ser iniciado corretamente porque
        libev
        ficou sem memória, um descritor de arquivo foi fechado ou qualquer
        outro problema.
        Libev
        considera esses bugs de aplicação. Veja também
        » ANATOMIA
    DE UM OBSERVADOR
       
Opções de backend:
Ev::BACKEND_SELECT
      
        select(2) backend
       
Ev::BACKEND_POLL
      
        poll(2) backend
       
Ev::BACKEND_EPOLL
      
        Backend
        epoll(7)
        específico do Linux para kernels pré e pós-2.6.9
       
Ev::BACKEND_KQUEUE
      
        Backend kqueue
        usado na maioria dos sistemas BSD.
        O observador EvEmbed
        pode ser usado para incorporar um laço (com backend kqueue) em
        outro. Por exemplo, pode-se tentar criar um laço de eventos com backend
        kqueue
        e usá-lo apenas para soquetes.
       
Ev::BACKEND_DEVPOLL
      Back-end do Solaris 8. Isso ainda não foi implementado.
Ev::BACKEND_PORT
      Mecanismo de porta de eventos Solaris 10 com bom dimensionamento.
Ev::BACKEND_ALL
      
        Experimente todos os back-ends (mesmo os corrompidos). Não é recomendado usá-lo
        explicitamente. Operadores bit a bit devem ser aplicados aqui (por exemplo,
        Ev::BACKEND_ALL
        & ~
        Ev::BACKEND_KQUEUE).
        Use
        Ev::recommendedBackends()
        ou não não especifique nenhum back-end.
       
Ev::BACKEND_MASK
      
        Não é um backend, mas uma máscara para selecionar todos os bits de
        backend do valor flags
        para mascarar quaisquer backends (por exemplo, ao modificar
        a variável de ambiente
        LIBEV_FLAGS).
       
Nota:
Para o laço padrão durante a fase de inicialização do módulo,
Evregistra » ev_loop_fork chamada por meio depthread_atfork(se disponível).
Nota:
Existem métodos que fornecem acesso ao laço de eventos padrão na classe Ev (por exemplo, Ev::iteration(), Ev::depth() etc.) Para laços personalizados (criados com EvLoop::__construct()) esses valores podem ser acessados através de propriedades e métodos correspondentes da classe EvLoop.
A instância do laço de eventos padrão em si pode ser obtida por meio do método EvLoop::defaultLoop().
