array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'pt_BR', ), 'this' => array ( 0 => 'class.evprepare.php', 1 => 'EvPrepare', 2 => 'A classe EvPrepare', ), 'up' => array ( 0 => 'book.ev.php', 1 => 'Ev', ), 'prev' => array ( 0 => 'evperiodic.set.php', 1 => 'EvPeriodic::set', ), 'next' => array ( 0 => 'evprepare.construct.php', 1 => 'EvPrepare::__construct', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'pt_BR', 'path' => 'reference/ev/evprepare.xml', ), 'history' => array ( ), 'extra_header_links' => array ( 'rel' => 'alternate', 'href' => '/manual/en/feeds/class.evprepare.atom', 'type' => 'application/atom+xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); contributors($setup); ?>

A classe EvPrepare

(PECL ev >= 0.2.0)

Introdução

Os observadores EvPrepare e EvCheck são geralmente usados em pares. Os observadores EvPrepare são invocados antes do bloqueio do processo, EvCheck depois.

Não é permitido chamar EvLoop::run() ou métodos ou funções similares que entrem no laço de eventos atual dos observadores EvPrepare ou EvCheck. Outros laços além do atual são adequados, entretanto. A lógica por trás disso é que não é necessário verificar a recursão nesses observadores, ou seja, a sequência será sempre: EvPrepare -> bloqueando -> EvCheck, portanto, tendo um observador de cada tipo, eles sempre serão chamados em pares, colocando entre colchetes a chamada de bloqueio.

O objetivo principal é integrar outros mecanismos de eventos no libev e seu uso está um tanto avançado. Eles poderiam ser usados, por exemplo, para rastrear alterações de variáveis, implementar observadores personalizados, integrar net-snmp ou uma biblioteca de corrotinas e muito mais. Ocasionalmente, eles também são úteis para armazenar alguns dados em cache e deseja liberá-los antes de bloqueá-los.

É recomendado dar aos observadores EvCheck a prioridade mais alta ( Ev::MAXPRI), para garantir que eles estejam sendo executados antes de qualquer outro observador após o poll (isso não importa para observadores EvPrepare).

Além disso, os observadores do EvCheck não devem ativar/alimentar eventos. Embora libev suporte totalmente isso, eles podem ser executados antes que outros observadores EvCheck façam seu trabalho.

Resumo da classe

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

Índice