Ev
PHP Manual

La classe EvLoop

(PECL ev >= 0.2.0)

Introduction

Représente une boucle d'événements qui est toujours distincte de la boucle par défaut. Contrairement à la boucle par défaut, elle ne peut pas gérer les watchers EvChild.

Lorsqu'on utilise les threads, nous devons créer une boucle par thread, et utiliser la boucle par défaut dans le thread parent.

La boucle d'événements par défaut est initialisée automatiquement par Ev. Elle est accessible via les méthodes de la classe Ev ou via la méthode EvLoop::defaultLoop().

Synopsis de la classe

final EvLoop {
/* Propriétés */
public $data ;
public $backend ;
public $iteration ;
public $pending ;
public $io_interval ;
public $depth ;
/* Méthodes */
public int backend ( void )
final public EvCheck check ( string $callback [, string $data [, string $priority ]] )
final public EvChild child ( string $pid , string $trace , string $callback [, string $data [, string $priority ]] )
public __construct ([ int $flags [, mixed $data = NULL [, double $io_interval = 0.0 [, double $timeout_interval = 0.0 ]]]] )
public static EvLoop defaultLoop ([ int $flags = Ev::FLAG_AUTO [, mixed $data = NULL [, double $io_interval = 0. [, double $timeout_interval = 0. ]]]] )
final public EvEmbed embed ( string $other [, string $callback [, string $data [, string $priority ]]] )
final public EvFork fork ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvIdle idle ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void invokePending ( void )
final public EvIo io ( mixed $fd , int $events , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void loopFork ( void )
public double now ( void )
public void nowUpdate ( void )
final public EvPeriodic periodic ( double $offset , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvPrepare prepare ( callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void resume ( void )
public void run ([ int $flags = 0 ] )
final public EvSignal signal ( int $signum , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
final public EvStat stat ( string $path , double $interval , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void stop ([ int $how ] )
public void suspend ( void )
final public EvTimer timer ( double $after , double $repeat , callable $callback [, mixed $data = NULL [, int $priority = 0 ]] )
public void verify ( void )
}

Propriétés

data

Données personnalisées à attacher à la boucle

backend

Lecture seule. Les drapeaux du backend indiquant le backend d'événements en cours d'utilisation.

is_default_loop

Lecture seule. TRUE si c'est la boucle d'événements par défaut.

iteration

Le compteur d'itération courant de la boucle. Voir la méthode Ev::iteration().

pending

Le nombre de watchers en attente. 0 indique qu'il n'y a aucun watcher en attente.

io_interval

Une valeur haute pour io_interval permet à libev de passer plus de temps à collecter les événements EvIo, ainsi, plus d'événements peuvent être gérés par itération, mais cela va augmenter la latence. Les délais d'attente maximum (pour à la fois EvPeriodic et EvTimer) ne seront pas affectés. Le fait de définir cette option à une valeur différente de zéro va introduire un appel à sleep() supplémentaire dans la plupart des itérations de la boucle. Le temps de pause assure que libev ne va pas interroger EvIo plus d'une fois pendant cet intervalle, en moyenne. La plupart des programmes peuvent avoir des effets bénéfiques en définissant io_interval à une valeur proche de 0.1, ce qui est en général suffisant pour les serveurs interactifs (et non destinés aux jeux). Il n'y a généralement aucun sens à définir cette valeur à une valeur inférieure à 0.01, sachant que l'on s'approche de la granularité au niveau des durées de la plupart des systèmes.

Voir aussi les »  fonctions contrôlant les boucles d'événements.

timeout_interval

Une valeur haute pour timeout_interval permet à libev de passer plus de temps à collecter les délais maximales d'attente, mais à pour conséquence d'accroitre la latence, le stress et l'inexactitude (la fonction de rappel du watcher sera appelée plus tard). Les watchers EvIo ne seront pas affectés. Le fait de définir cette valeur à une valeur non nulle ne va introduire aucune surcharge supplémentaire à libev. Voir aussi les »  fonctions contrôlant les boucles d'évéments.

depth

La profondeur de la récursion. Voir la méthode Ev::depth().

Sommaire


Ev
PHP Manual