<?php
// Crea e inicia un timer lanzado después de 2 segundos
$w1 = new EvTimer(2, 0, function () {
echo "2 segundos pasados\n";
});
// Crea e inicia un timer lanzado después de 2 segundos, y lo repite cada segundo
// hasta que no se detenga manualmente
$w2 = new EvTimer(2, 1, function ($w) {
echo "es llamado cada segundo, es iniciado después de 2 segundos\n";
echo "iteración = ", Ev::iteration(), PHP_EOL;
// Detiene el watcher después de 5 iteraciones
Ev::iteration() == 5 and $w->stop();
// Detiene el watcher si llamadas posteriores causan más de 10 iteraciones
Ev::iteration() >= 10 and $w->stop();
});
// Crea un timer detenido. Estará inactivo hasta que no se inicie manualmente
$w_stopped = EvTimer::createStopped(10, 5, function($w) {
echo "Función de retrollamada del timer creado detenido\n";
// Detiene el watcher después de 2 iteraciones
Ev::iteration() >= 2 and $w->stop();
});
// Bucle mientras Ev::stop() es llamado o mientras todos los watchers no se detienen
Ev::run();
// Inicia y bloquea si está en funcionamiento
$w_stopped->start();
echo "Ejecución de una sola iteración\n";
Ev::run(Ev::RUN_ONCE);
echo "Reinicia el segundo watcher y intenta manejar los mismos eventos, pero no bloquea\n";
$w2->again();
Ev::run(Ev::RUN_NOWAIT);
$w = new EvTimer(10, 0, function() {});
echo "Ejecución de un bucle bloqueante\n";
Ev::run();
echo "FIN\n";
?>
El resultado del ejemplo
sería algo similar a:
2 segundos pasados
es llamado cada segundo, es iniciado después de 2 segundos
iteración = 1
es llamado cada segundo, es iniciado después de 2 segundos
iteración = 2
es llamado cada segundo, es iniciado después de 2 segundos
iteración = 3
es llamado cada segundo, es iniciado después de 2 segundos
iteración = 4
es llamado cada segundo, es iniciado después de 2 segundos
iteración = 5
Ejecución de una sola iteración
Función de retrollamada del timer creado detenido
Reinicia el segundo watcher y intenta manejar los mismos eventos, pero no bloquea
Ejecución de un bucle bloqueante
es llamado cada segundo, es iniciado después de 2 segundos
iteración = 8
es llamado cada segundo, es iniciado después de 2 segundos
iteración = 9
es llamado cada segundo, es iniciado después de 2 segundos
iteración = 10
FIN