PHP Conference Nagoya 2025

La classe EvIdle

(PECL ev >= 0.2.0)

Introduction

Les watchers EvIdle lancent les événements lorsqu'aucun autre événement ayant la même (ou supérieure) priorité n'est en attente (EvPrepare, EvCheck et d'autres watchers EvIdle ne comptent pas recevoir d'événements).

Aussi, tant que le processus est en cours de gestion des sockets ou des délais d'attente maximal (ou même de signaux) de même priorité (ou de priorité supérieure), il ne sera pas lancé. Mais lorsque le processus est au ralenti (ou que seuls des watchers ayant une priorité basse ne sont en attente), les watchers EvIdle seront appelés une fois par itération de la boucle d'événements - et ce, tant qu'ils ne sont pas stoppés, ou que le processus ne recoive plus d'événements et devienne ainsi occupé à gérer les travaux ayant une priorité supérieure.

En plus de maintenir le processus non bloquant (ce qui est utile parfois), les watchers EvIdle sont un bon endroit pour réaliser des "travaux en pseudo-arrière plan", ou remettre des travaux après que la boucle d'événements n'ait gérée les événements exceptionnels.

L'effet le plus notable est que, tant que des watchers idle sont actifs, le processus ne va pas bloquer lors de l'attente de nouveaux événements.

Synopsis de la classe

class EvIdle extends EvWatcher {
/* Propriétés héritées */
public $is_active;
public $data;
public $is_pending;
public $priority;
/* Méthodes */
public __construct( callable $callback , mixed $data = ?, int $priority = ?)
final public static createStopped( string $callback , mixed $data = ?, int $priority = ?): object
/* Méthodes héritées */
public EvWatcher::feed( int $revents ): void
public EvWatcher::invoke( int $revents ): void
public EvWatcher::keepalive( bool $value = ?): bool
public EvWatcher::setCallback( callable $callback ): void
}

Sommaire

add a note

User Contributed Notes

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