(PECL ev >= 0.2.0)
EvTimer::__construct — Construit un objet EvTimer watcher
$after
,$repeat
,$callback
,$data
= null
,$priority
= 0
Construit un objet EvTimer watcher.
after
after secondes.
repeat
0.0, alors le watcher
sera automatiquement stoppé lorsque le délai maximal d'attente sera
atteint. Si ce paramètre est positif, alors le timer va automatiquement
lancer le trigger à chaque seconde suivante, et ce, tant qu'il ne sera
pas stoppé manuellement.
callback
data
priority
Exemple #1 timers simples
<?php
// Crée et démarre un timer lancé après 2 secondes
$w1 = new EvTimer(2, 0, function () {
echo "2 secondes passées\n";
});
// Crée et démarre un timer lancé après 2 secondes, et le répète toutes les secondes
// tant que nous ne le stoppons pas manuellement
$w2 = new EvTimer(2, 1, function ($w) {
echo "est appelé chaque seconde, est démarré après 2 secondes\n";
echo "itération = ", Ev::iteration(), PHP_EOL;
// Stoppe le watcher après 5 itérations
Ev::iteration() == 5 and $w->stop();
// Stoppe le watcher si les appels suivants provoquent plus de 10 itérations
Ev::iteration() >= 10 and $w->stop();
});
// Crée un timer stoppé. Il sera inactif tant que nous ne le démarrons pas nous même
$w_stopped = EvTimer::createStopped(10, 5, function($w) {
echo "Fonction de rappel du timer créé stoppé\n";
// Stop le watcher après 2 itérations
Ev::iteration() >= 2 and $w->stop();
});
// Boucle tant que Ev::stop() est appelé ou tant que tous les watchers ne s'arrêtent
Ev::run();
// Démarre et verrouille s'il est en fonctionnement
$w_stopped->start();
echo "Exécution d'une seule itération\n";
Ev::run(Ev::RUN_ONCE);
echo "Redémarre le second watcher et tente de gérer les mêmes événements, mais ne bloque pas\n";
$w2->again();
Ev::run(Ev::RUN_NOWAIT);
$w = new EvTimer(10, 0, function() {});
echo "Exécution d'une boucle bloquante\n";
Ev::run();
echo "FIN\n";
?>Résultat de l'exemple ci-dessus est similaire à :
2 secondes passées est appelé chaque seconde, est démarré après 2 secondes itération = 1 est appelé chaque seconde, est démarré après 2 secondes itération = 2 est appelé chaque seconde, est démarré après 2 secondes itération = 3 est appelé chaque seconde, est démarré après 2 secondes itération = 4 est appelé chaque seconde, est démarré après 2 secondes itération = 5 Exécution d'une seule itération Fonction de rappel du timer créé stoppé Redémarre le second watcher et tente de gérer les mêmes événements, mais ne bloque pas Exécution d'une boucle bloquante est appelé chaque seconde, est démarré après 2 secondes itération = 8 est appelé chaque seconde, est démarré après 2 secondes itération = 9 est appelé chaque seconde, est démarré après 2 secondes itération = 10 FIN