La classe Ev

(PECL ev >= 0.2.0)

Introduction

La classe Ev est une classe statique fournissant l'accÚs à la boucle par défaut ainsi qu'à quelques opérations communes.

Synopsis de la classe

final class Ev {
/* Constantes */
const int FLAG_AUTO = 0;
const int FLAG_NOENV = 16777216;
const int FLAG_FORKCHECK = 33554432;
const int FLAG_NOINOTIFY = 1048576;
const int FLAG_SIGNALFD = 2097152;
const int FLAG_NOSIGMASK = 4194304;
const int RUN_NOWAIT = 1;
const int RUN_ONCE = 2;
const int BREAK_CANCEL = 0;
const int BREAK_ONE = 1;
const int BREAK_ALL = 2;
const int MINPRI = -2;
const int MAXPRI = 2;
const int READ = 1;
const int WRITE = 2;
const int TIMER = 256;
const int PERIODIC = 512;
const int SIGNAL = 1024;
const int CHILD = 2048;
const int STAT = 4096;
const int IDLE = 8192;
const int PREPARE = 16384;
const int CHECK = 32768;
const int EMBED = 65536;
const int CUSTOM = 16777216;
const int ERROR = 2147483648;
const int BACKEND_SELECT = 1;
const int BACKEND_POLL = 2;
const int BACKEND_EPOLL = 4;
const int BACKEND_KQUEUE = 8;
const int BACKEND_DEVPOLL = 16;
const int BACKEND_PORT = 32;
const int BACKEND_ALL = 63;
const int BACKEND_MASK = 65535;
/* Méthodes */
final public static function backend(): int
final public static function depth(): int
final public static function embeddableBackends(): int
final public static function feedSignal( int $signum ): void
final public static function feedSignalEvent( int $signum ): void
final public static function iteration(): int
final public static function now(): float
final public static function nowUpdate(): void
final public static function recommendedBackends(): int
final public static function resume(): void
final public static function run( int $flags = ?): void
final public static function sleep( float $seconds ): void
final public static function stop( int $how = ?): void
final public static function supportedBackends(): int
final public static function suspend(): void
final public static function time(): float
final public static function verify(): void
}

Constantes pré-définies

Drapeaux passés pour créer une boucle :

Ev::FLAG_AUTO
La valeur par défaut des drapeaux
Ev::FLAG_NOENV
Si ce drapeau est utilisé (ou que le programme exécute setuid ou setgid), libev ne va pas regarder la variable d'environnement LIBEV_FLAGS. Sinon (comportement par défaut), LIBEV_FLAGS va écraser complÚtement le drapeau s'il est trouvé. Utile pour des tests de performance et pour la recherche de bogues.
Ev::FLAG_FORKCHECK
Fait que libev va vĂ©rifier si un fork existe Ă  chaque itĂ©ration, au lieu d'appeler manuellement la mĂ©thode EvLoop::fork(). Ce mĂ©canisme fonctionne en appelant getpid() Ă  chaque itĂ©ration de la boucle, et ainsi, va ralentir la boucle d'Ă©vĂ©nements qui possĂšdent beaucoup d'itĂ©rations, mais habituellement, ce ralentissement n'est pas notable. La configuration de ce drapeau ne peut pas ĂȘtre Ă©crasĂ©e ou spĂ©cifiĂ©e dans la variable d'environnement LIBEV_FLAGS.
Ev::FLAG_NOINOTIFY
Lorsque ce drapeau est spĂ©cifiĂ©, libev ne va pas tenter d'utiliser l'API inotify pour ces watchers » ev_stat. Ce drapeau peut ĂȘtre utile pour conserver les descripteurs de fichiers inotify, sachant que sinon, chaque boucle utilisant les watchers ev_stat va consommer un gestionnaire inotify.
Ev::FLAG_SIGNALFD
Lorsque ce drapeau est spécifié, libev va tenter d'utiliser l'API signalfd pour ces watchers » ev_signal (et » ev_child). Cette API délivre les signaux de façon synchrone, ce qui la rend plus rapide, et peut permettre la récupération des données des signaux en attente. Elle peut également simplifier la gestion des signaux avec les threads, sachant que les signaux sont des propriétés bloquées dans les threads. Signalfd ne sera pas utilisé par défaut.
Ev::FLAG_NOSIGMASK
Lorsque ce drapeau est spécifié, libev ne va pas modifier le masque du signal. Ceci signifie qu'il faut s'assurer que les signaux sont déverrouillés avant de les recevoir. Ce comportement est utile pour la gestion personnalisée des signaux, ou la gestion des signaux uniquement dans des threads spécifiques.

Drapeaux Ă  passer Ă  Ev::run(), ou Ă  EvLoop::run()

Ev::RUN_NOWAIT
Signifie que la boucle d'Ă©vĂ©nements va regarder si de nouveaux Ă©vĂ©nements sont prĂ©sents, va gĂ©rer ces nouveaux Ă©vĂ©nements, et tous les Ă©vĂ©nements spĂ©ciaux, mais ne va pas attendre et bloquer le processus dans le cas oĂč il n'y a pas d'Ă©vĂ©nement, et va retourner aprĂšs une itĂ©ration de la boucle. Il est parfois utile de placer en file et gĂ©rer les nouveaux Ă©vĂ©nements pendant de longs calculs, et ce, pour garder le programme actif.
Ev::RUN_ONCE
Signifie que la boucle d'Ă©vĂ©nements va regarder si de nouveaux Ă©vĂ©nements sont prĂ©sents (et attendre, si nĂ©cessaire), et va les gĂ©rer, eux et les spĂ©ciaux. Elle va bloquer le processus tant qu'au moins un Ă©vĂ©nement arrive (qui peut ĂȘtre un Ă©vĂ©nement interne Ă  libev, aussi, il n'est pas garanti qu'une fonction de rappel enregistrĂ©e par l'utilisateur ne soit appelĂ©e), et va retourner aprĂšs une itĂ©ration de la boucle.

Drapeaux passés à Ev::stop(), ou à EvLoop::stop()

Ev::BREAK_CANCEL
Annule l'opération d'annulation.
Ev::BREAK_ONE
Retourne le plus profond appel Ă  Ev::run() (ou EvLoop::run()).
Ev::BREAK_ALL
Retourne le plus proche appel Ă  Ev::run() (ou EvLoop::run()).

Priorités de Watcher :

Ev::MINPRI
Priorité minimale autorisée pour un watcher.
Ev::MAXPRI
Priorité maximale autorisée pour un watcher.

Masques d'octets d'événements (reçus) :

Ev::READ
Le descripteur de fichier dans le watcher EvIo est devenu accessible en lecture.
Ev::WRITE
Le descripteur de fichier dans le watcher EvIo est devenu accessible en écriture.
Ev::TIMER
Le watcher EvTimer a atteint son délai maximal d'attente.
Ev::PERIODIC
Le watcher EvPeriodic a atteint son délai maximal d'attente.
Ev::SIGNAL
Un signal spécifié dans EvSignal::__construct() a été reçu.
Ev::CHILD
Le pid spécifié dans EvChild::__construct() a reçu une modification de statut.
Ev::STAT
Le chemin spécifié dans le watcher EvStat a modifié ses attributs.
Ev::IDLE
Le watcher EvIdle fonctionne lorsqu'il n'a aucune autre tĂąche Ă  faire avec les autres watchers.
Ev::PREPARE
Tous les watchers EvPrepare sont appelĂ©s juste avant le dĂ©marrage de Ev::run(). Ainsi, les watchers EvPrepare sont les derniers watchers Ă  ĂȘtre appelĂ©s avant le repos de la boucle d'Ă©vĂ©nements, ou la mise en file des nouveaux Ă©vĂ©nements.
Ev::CHECK
Tous les watchers EvCheck sont placĂ©s en file d'attente juste aprĂšs que Ev::run() ait rĂ©cupĂ©rĂ© les nouveaux Ă©vĂ©nements, mais avant, toutes les fonctions de rappel de tous les Ă©vĂ©nements reçus sont placĂ©es en file d'attente. Ainsi, les watchers EvCheck seront appelĂ©s avant tout autre watcher de mĂȘme prioritĂ© ou de prioritĂ© plus basse dans une itĂ©ration de boucle d'Ă©vĂ©nements.
Ev::EMBED
La boucle d'événements embarquée spécifiée dans le watcher EvEmbed a besoin de toute l'attention.
Ev::CUSTOM
Pas encore envoyĂ© (ou utilisĂ©) par libev, mais peut ĂȘtre librement utilisĂ© par les utilisateurs libev pour signaler les watchers (c.-Ă -d. via la mĂ©thode EvWatcher::feed()).
Ev::ERROR
Une erreur inconnue est survenue, le watcher s'est arrĂȘtĂ©. Ceci peut arriver car le watcher n'a pas pu ĂȘtre dĂ©marrĂ© proprement car libev a dĂ©passĂ© la mĂ©moire allouĂ©e, un descripteur de fichier a Ă©tĂ© fermĂ©, ou tout autre problĂšme. Libev considĂšre ceci comme des bogues de l'application. Voir aussi » l'anatomie d'un watcher

Drapeaux de Backend :

Ev::BACKEND_SELECT
select(2) backend
Ev::BACKEND_POLL
poll(2) backend
Ev::BACKEND_EPOLL
Backend epoll(7) spécifique à Linux pour, à la fois, les kernels avant et aprÚs 2.6.9.
Ev::BACKEND_KQUEUE
Backend kqueue utilisĂ© sur la plupart des systĂšmes BSD. Le watcher EvEmbed peut ĂȘtre utilisĂ© pour embarquer une boucle (avec le backend kqueue) dans une autre. Actuellement, une boucle peut tenter de crĂ©er une boucle d'Ă©vĂ©nements avec le backend kqueue et l'utiliser uniquement pour les sockets.
Ev::BACKEND_DEVPOLL
Backend Solaris 8. Actuellement non implémenté.
Ev::BACKEND_PORT
Mécanisme de port d'événements Solaris avec un bon rendement.
Ev::BACKEND_ALL
Essaie tous les backends (y compris les corrompus). Il n'est pas recommandĂ© de l'utiliser explicitement. Les opĂ©rateurs de bits devraient ĂȘtre appliquĂ©s ici (c.-Ă -d. Ev::BACKEND_ALL & ~ Ev::BACKEND_KQUEUE). Utiliser la mĂ©thode Ev::recommendedBackends() ou ne spĂ©cifier aucun backend.
Ev::BACKEND_MASK
Pas un backend, mais un masque pour sélectionner tous les bits d'un backend depuis la valeur de flags pour représenter dans un masque n'importe quel backend (c.-à-d. lors de la modification de la variable d'environnement LIBEV_FLAGS).

Note: Pour la boucle par défaut, pendant la phase d'initialisation du module, Ev enregistre des appels à » ev_loop_fork via pthread_atfork (si disponible).

Note: Il y a des mĂ©thodes fournissant l'accĂšs Ă  la boucle d'Ă©vĂ©nements par dĂ©faut dans la classe Ev (c.-Ă -d. Ev::iteration(), Ev::depth(), etc.) Pour les boucles personnalisĂ©es (créées avec EvLoop::__construct()), ces valeurs peuvent ĂȘtre accessibles via les propriĂ©tĂ©s et les mĂ©thodes correspondantes de la classe EvLoop. L'instance de la boucle d'Ă©vĂ©nements par dĂ©faut peut ĂȘtre rĂ©cupĂ©rĂ©e via la mĂ©thode EvLoop::defaultLoop().

Sommaire

  • Ev::backend — Retourne un entier dĂ©crivant le backend utilisĂ© par libev
  • Ev::depth — Retourne la profondeur de rĂ©cursion
  • Ev::embeddableBackends — Retourne le jeu de backends qui sont encapsulĂ©s dans les autres boucles d'Ă©vĂ©nements
  • Ev::feedSignal — Simule la rĂ©ception d'un signal
  • Ev::feedSignalEvent — Simule un Ă©vĂ©nement de signal dans la boucle par dĂ©faut
  • Ev::iteration — Retourne le nombre de fois que la boucle d'Ă©vĂ©nement par dĂ©faut a Ă©tĂ© sollicitĂ©e pour un nouvel Ă©vĂ©nement
  • Ev::now — Retourne le temps de dĂ©marrage de la derniĂšre itĂ©ration de la boucle d'Ă©vĂ©nement par dĂ©faut
  • Ev::nowUpdate — Établit le temps courant en demandant au kernel ; met Ă  jour le temps retournĂ© par Ev::now pendant l'exĂ©cution
  • Ev::recommendedBackends — Retourne un masque de bits de backends recommandĂ©s pour la plateforme courante
  • Ev::resume — Reprend la boucle d'Ă©vĂ©nement par dĂ©faut prĂ©cĂ©demment stoppĂ©e
  • Ev::run — Commence la vĂ©rification des Ă©vĂ©nements et appelle les fonctions de rappels pour la boucle par dĂ©faut
  • Ev::sleep — Bloque le processus pendant un nombre de secondes fourni
  • Ev::stop — ArrĂȘte la boucle d'Ă©vĂ©nements par dĂ©faut
  • Ev::supportedBackends — Retourne le jeu de backends supportĂ©s par la configuration courante de libev
  • Ev::suspend — Suspend la boucle par dĂ©faut d'Ă©vĂ©nements
  • Ev::time — Retourne le temps courant depuis l'Ă©poque Unix
  • Ev::verify — Effectue des vĂ©rifications internes de consistance (pour le dĂ©bogage)
add a note

User Contributed Notes

There are no user contributed notes for this page.