EvTimer::__construct

(PECL ev >= 0.2.0)

EvTimer::__construct — Construit un objet EvTimer watcher

Description

public function EvTimer::__construct(
     float $after ,
     float $repeat ,
     callable $callback ,
     mixed $data = null ,
     int $priority = 0
)

Construit un objet EvTimer watcher.

Liste de paramĂštres

after
Configure le timer pour se déclencher aprÚs after secondes.
repeat
Si ce paramÚtre vaut 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 sera automatiquement configuré pour se déclencher à nouveau toutes les repeat secondes, 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
Les priorités du Watcher

Exemples

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";

// 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
add a note

User Contributed Notes 1 note

up
2
Jayesh Wadhwani ¶
12 years ago
Example of passing custom data:

<?php
// Create and start timer firing after 2 seconds with custom data
$w1 = new EvTimer(2, 0, function ($w) {
    echo "Custom data: $w->data\n";
    echo "2 seconds elapsed\n";
}, 'abcd');
Ev::run();
?>
Running this will print out:
Custom data: abcd
2 seconds elapsed

Note that 'data' is a public property of the event EvWatcher class.