PHP Conference Nagoya 2025

EvTimer::__construct

(PECL ev >= 0.2.0)

EvTimer::__constructConstruit un objet EvTimer watcher

Description

public 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 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

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

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é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
add a note

User Contributed Notes 1 note

up
1
Jayesh Wadhwani
11 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.
To Top