La classe EventBase
(PECL event >= 1.2.6-beta)
Introduction
La classe EventBase représente la structure de base d'un événement libevent. Elle contient un jeu d'événements et peut vérifier quels sont les événements actifs.
Chaque événement de base a une méthode ou un backend utilisé pour déterminer quels sont les événements prêts. Ces méthodes sont : select, poll, epoll, kqueue, devpoll, evport et win32.
Pour configurer un événement de base à utiliser, ou éviter un backend spécifique, la classe EventConfig peut être utilisée.
Ne détruisez pas l'objet EventBase tant que les ressources associées aux objets Event ne sont pas libérées. Sinon, cela mènera à des résultats totalement indéfinis !
Synopsis de la classe
Constantes pré-définies
-
EventBase::LOOP_ONCE
-
Drapeau utilisé avec la méthode EventBase::loop() qui signifie : "blocage tant que libevent a un événement actif, puis, sortie une fois que tous les événements actifs ont exécuté leurs fonctions de rappel".
-
EventBase::LOOP_NONBLOCK
-
Drapeau utilisé avec la méthode EventBase::loop() qui signifie : "ne pas bloquer : regarde quels sont les événements prêts actuellement, exécute leurs fonctions de rappel avec une priorité haute, puis, on sort".
-
EventBase::NOLOCK
-
Drapeau de configuration. Ne pas verrouiller la base de l'événement, même si un verrouillage avait été mis en place.
-
EventBase::STARTUP_IOCP
-
Drapeau de configuration spécifique à Windows. Active le répartiteur IOCP au démarrage.
-
EventBase::NO_CACHE_TIME
-
Drapeau de configuration. Au lieu de vérifier le temps courant chaque fois que la boucle d'événement est prête à exécuter la fonction de rappel, le temps sera vérifié a chaque fois que le délai maximal d'attente pour la fonction de rappel sera atteint.
-
EventBase::EPOLL_USE_CHANGELIST
-
Si vous utilisez le backend epoll, ce drapeau signifie qu'il est sécurisé d'utiliser le code interne de modification de liste interne à Libevent pour mettre en lot les ajouts et les suppressions afin de tenter de minimiser le plus possible le nombre d'appels système..
Le fait de définir ce drapeau rend le code plus rapide, mais il peut se confronter à un bogue Linux : il n'est pas sécurisé d'utiliser ce drapeau en la présence d'un fds clôné par dup() ou une de ces variantes. Ceci produirait un comportement étrange et très difficile à diagnostiquer.
Ce drapeau peut aussi être activé en définissant la variable d'environnement EVENT_EPOLL_USE_CHANGELIST.
Ce drapeau n'a aucun effet si on l'utlise avec un autre backend que epoll.
Sommaire
- EventBase::__construct — Construit un objet EventBase
- EventBase::dispatch — Distribut les événements en attente
- EventBase::exit — Stoppe la distribution des événements
- EventBase::free — Libère les ressources allouées pour l'événement de base
- EventBase::getFeatures — Retourne un masque des fonctionalités supportées
- EventBase::getMethod — Retourne la méthode d'événement utilisée
- EventBase::getTimeOfDayCached — Retourne le temps de l'événement courant
- EventBase::gotExit — Vérifie s'il a été demandé à la boucle d'événements de sortir
- EventBase::gotStop — Vérifie s'il a été demandé à la boucle d'événements de s'arrêter
- EventBase::loop — Distribue les événements en attente
- EventBase::priorityInit — Défini le nombre de propriétés par événement de base
- EventBase::reInit — Re-initialise l'événement de base (après un fork)
- EventBase::stop — Demande à event_base de stopper la distribution d'événements
Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-class.eventbase.html
L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.
Références
Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.