<?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";
// Stoppe le watcher aprÚs 2 itérations
Ev::iteration() >= 2 and $w->stop();
});
// Boucle jusqu'Ă ce que Ev::stop() soit appelĂ© ou que tous les watchers s'arrĂȘtent
Ev::run();
// Démarre et regarde si ça fonctionne
$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