in

Iniciar y detener un temporizador PHP

apple touch icon@2

Como alternativa, php tiene un controlador de temporizador incorporado: new EvTimer().

Puede usarse para hacer un programador de tareas, con el manejo adecuado de casos especiales.

Esto no es solo el tiempo, sino una capa de transporte de tiempo, un cronómetro, un contador de vueltas, como un cronómetro pero con devoluciones de llamada php;)

Los observadores de EvTimer son simples temporizadores relativos que generan un evento después de un tiempo determinado y, opcionalmente, se repiten en intervalos regulares después de eso.

Los temporizadores son basado en tiempo real, es decir, si uno registra un evento que se agota después de una hora y restablece el reloj del sistema a enero del año pasado, aún se agotará después de (aproximadamente) una hora.

Se garantiza que la devolución de llamada se invocará solo después de que haya pasado su tiempo de espera (…). Si varios temporizadores están listos durante la misma iteración de bucle, los que tienen los valores de tiempo de espera anteriores se invocan antes que los de la misma prioridad con valores de tiempo de espera posteriores.

El temporizador en sí hará su mejor esfuerzo en evitando la deriva, es decir, si un temporizador está configurado para activarse cada 10 segundos, normalmente se activará exactamente a intervalos de 10 segundos. Sin embargo, si el guión no puede seguir el ritmo del temporizador porque tarda más de esos 10 segundos en hacerlo) el el temporizador no disparará más de una vez por iteración de bucle de eventos.

Los dos primeros parámetros permiten controlar el tiempo de espera antes de la ejecución y el número de iteraciones.

El tercer parámetro es una función de devolución de llamada, llamada en cada iteración.

after

    Configures the timer to trigger after after seconds.

repeat

    If repeat is 0.0 , then it will automatically be stopped once the timeout is reached.
    If it is positive, then the timer will automatically be configured to trigger again every repeat seconds later, until stopped manually.

https://www.php.net/manual/en/class.evtimer.php

https://www.php.net/manual/en/evtimer.construct.php

$w2 = new EvTimer(2, 1, function ($w) {
    echo "is called every second, is launched after 2 secondsn";
    echo "iteration = ", 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();
});

Por supuesto, podemos crear esto fácilmente con un bucle básico y algo de tempo con sleep(), usleep(), o hrtime(), pero new EvTimer() permite limpiar y organizar múltiples llamadas, mientras maneja casos especiales como superpuesto.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Java: la interfaz del mapa

WyRQMMoSwExbkvsnFejkoJ 1200 80

Cómo actualizar a Elder Scrolls Online Console Enhanced para PS5 y Xbox X / S