El watcher EvPeriodic funciona en diferentes
  modos según los parámetros offset,
  interval y reschedule_cb.
 
    El modo Temporizador absoluto. En este modo,
    interval = 0,
    reschedule_cb = null.
    La llamada se realizará a la hora del reloj offset
    y no se repetirá. No se ajustará cuando ocurra un salto en el tiempo,
    por lo tanto, si debe ejecutarse el 1 de enero de 2014,
    se ejecutará cuando la hora del sistema sea alcanzada o superada.
   
    El modo Temporizador con repetición por intervalo.
    En este modo, interval > 0,
    reschedule_cb = null ; el watcher será programado
    automáticamente para finalizar en la próxima duración
    offset + N * interval
    (para un entero N) y luego se repite, independientemente
    de los saltos en el tiempo.
   
Puede utilizarse para crear temporizadores que no derivan respetando el reloj del sistema:
<?php
$hourly = EvPeriodic(0, 3600, NULL, function () {
  echo "una vez por hora\n";
});
?>3600 segundos
    entre cada llamada, sino solo que la función de retrollamada será llamada
    cuando el reloj del sistema muestre una hora completa (UTC).
   
   
    La clase EvPeriodic intentará ejecutar la función
    de retrollamada en este modo a la próxima hora posible donde
    time = offset (mod
    interval), independientemente de los saltos en el tiempo.
   
    El modo reprogramación manual. En este modo,
    reschedule_cb es un callable.
   
    interval y offset
    serán ambos ignorados. En su lugar, cada vez que el watcher periódico
    esté programado, la función de retrollamada de reprogramación (reschedule_cb)
    será llamada con el watcher primero y el tiempo actual como segundo argumento.
   
    Esta función de retrollamada no debe detener ni destruir
    este watcher periódico, ni otro, y no debe
    llamar a funciones o métodos de bucle de eventos. Para detenerlo,
    devuelva 1e30 y deténgalo después. Un watcher
    EvPrepare puede ser utilizado para realizar esta tarea.
   
Debe devolver la próxima hora de llamada, basada en el valor del tiempo pasado (el valor de tiempo más pequeño debe ser superior o igual al segundo argumento). Será llamada, habitualmente, justo después de que la función de retrollamada sea lanzada, pero posiblemente en otros momentos.
Ejemplo #1 Utilización de retrollamada de reprogramación
<?php
// Cada 10.5 segundos
function reschedule_cb ($watcher, $now) {
   return $now + (10.5 - fmod($now, 10.5));
}
$w = new EvPeriodic(0., 0., "reschedule_cb", function ($w, $revents) {
   echo time(), PHP_EOL;
});
Ev::run();
?>