SunshinePHP Developer Conference 2015

La classe EvPrepare

(PECL ev >= 0.2.0)

Introduction

Les observateurs EvPrepare et EvCheck sont habituellement utilisés ensemble. L'observateur EvPrepare sera appelé avant les blocs du processus, alors que l'observateur EvCheck sera appelé après.

Il n'est pas autorisé d'appeler la méthode EvLoop::run() ou une méthode/fonction similaire qui entre dans la boucle de l'événement courante depuis soit l'observateur EvPrepare, soit l'observateur EvCheck. Toutefois, cela est possible pour toutes les autres boucles que la courante. La cause de cela est qu'il n'est pas nécessaire de vérifier la récursion dans ces observateurs, i.e. la séquence suivante sera toujours : EvPrepare -> blocage -> EvCheck, aussi, avoir un observateur pour chacun n'est pas utile, sachant qu'ils seront toujours appelés ensemble lors de l'appel au blocage.

Le but primaire est d'intégrer d'autres mécanismes d'événements dans la bibliothèque libev, avec une utilisation avancée. Ils peuvent être utilisés, par exemple, pour surveiller les modifications de variables, implémenter des observateurs personnalisés, intégrer net-snmp ou une bibliothèque supplémentaire, et bien plus encore. Ils peuvent être aussi utiles pour mettre en cache des données, et vouloir les afficher après le blocage.

Il est recommandé de fournir une priorité haute à EvCheck (Ev::MAXPRI) afin de s'assurer qu'il sera exécuté avant tout autre observateur de la file (à contrario, peu importe pour l'observateur EvPrepare).

De plus, les observateurs EvCheck ne doivent pas activer/alimenter des événements. Bien que libev supporte cela, ils peuvent être exécutés avant que les autres observateurs EvCheck ne terminent leur travaux.

Synopsis de la classe

EvPrepare extends EvWatcher {
/* Propriétés héritées */
public $is_active ;
public $data ;
public $is_pending ;
public $priority ;
/* Méthodes */
public __construct ( string $callback [, string $data [, string $priority ]] )
final public static EvPrepare createStopped ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
/* Méthodes héritées */
public int EvWatcher::clear ( void )
abstract public EvWatcher::__construct ( void )
public void EvWatcher::feed ( int $revents )
public EvLoop EvWatcher::getLoop ( void )
public void EvWatcher::invoke ( int $revents )
public bool EvWatcher::keepalive ([ bool $value ] )
public void EvWatcher::setCallback ( callable $callback )
public void EvWatcher::start ( void )
public void EvWatcher::stop ( void )
}

Sommaire

add a note add a note

User Contributed Notes

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