(PECL ev >= 0.2.0)
EvTimer::__construct — Construit un objet EvTimer watcher
$after
,
float
$repeat
,
callable
$callback
[,
mixed
$data
= NULL
[,
int
$priority
= 0
]] )Construit un objet EvTimer watcher.
after
Configure le time pour lancer le trigger après
after
secondes.
repeat
Si ce paramètre vaut 0.0
, alors le watcher
sera automatiquement stoppé lors de 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
Voir les fonctions de rappel Watcher.
data
Données personnalisées associées avec le watcher.
priority
Retourne un objet EvTimer en cas de succès.
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ère 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;
// Stop the watcher after 5 iterations
Ev::iteration() == 5 and $w->stop();
// Stop the watcher if further calls cause more than 10 iterations
Ev::iteration() >= 10 and $w->stop();
});
// Crée un time 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ée 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";
?>
L'exemple ci-dessus va afficher quelque chose de 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ée 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