usleep()
En este artículo nos centraremos en la función usleep() de PHP: su descripción general, cómo funciona y ejemplos de uso.
En este artículo nos centraremos en la función usleep() de PHP. Te proporcionaremos una descripción general de la función, cómo funciona y ejemplos de su uso.
Introducción a la función usleep()
La función usleep() es una función integrada en PHP que se utilizaba para pausar la ejecución de un script durante un número específico de microsegundos. Permitía introducir retardos con una temporización muy precisa.
Nota:
usleep()quedó obsoleta en PHP 8.1 y fue eliminada en PHP 8.2. Para PHP moderno, utilizatime_nanosleep()otime_sleep_until()en su lugar.
La función usleep() recibe un único argumento, que es el número de microsegundos durante los cuales se pausará la ejecución del script. Un microsegundo es la millonésima parte de un segundo, por lo que 1000000 microsegundos equivalen a un segundo. Esta mayor granularidad es lo que distingue a usleep() de sleep(), que solo acepta segundos enteros.
Sintaxis
usleep(int $microseconds): void| Argumento | Tipo | Descripción |
|---|---|---|
$microseconds | int | El número de microsegundos durante los que se detiene el script. 1 segundo = 1000000 microsegundos. |
Cómo usar la función usleep()
Usar la función usleep() es muy sencillo. Solo tienes que llamar a la función y pasar el número de microsegundos durante los que se pausará la ejecución del script. Aquí tienes un ejemplo:
¿Cómo usar la función usleep()?
En este ejemplo, llamamos a la función usleep() con un argumento de 500000 para el número de microsegundos durante los que se pausará la ejecución del script. Esto pausa la ejecución del script durante 500 milisegundos (0,5 segundos). A continuación, mostramos un mensaje en la consola indicando que el script está en pausa, esperamos el tiempo especificado y luego mostramos otro mensaje indicando que la pausa ha finalizado.
Medir el retardo
Dado que los microsegundos son fáciles de contar mal, resulta útil medir el tiempo real transcurrido con microtime(). El siguiente ejemplo duerme un cuarto de segundo e imprime la duración real:
<?php
$start = microtime(true);
usleep(250000); // 250000 microseconds = 0.25 seconds
$elapsed = microtime(true) - $start;
echo "Slept for " . round($elapsed, 3) . " seconds\n";
?>La salida es aproximadamente Slept for 0.25 seconds — puede ser ligeramente mayor porque el sistema operativo decide cuándo reanudar el proceso.
Cuándo usar usleep()
usleep() es útil siempre que la pausa de un segundo completo de sleep() sea demasiado gruesa:
- Limitación de velocidad — añadir un pequeño intervalo entre llamadas repetidas a la API o iteraciones de bucle para mantenerse dentro de una cuota de solicitudes.
- Sondeo — esperar una fracción de segundo antes de volver a comprobar un archivo, bloqueo o cola.
- Limitación de salida — ralentizar una animación de CLI o la visualización de progreso para que sea legible.
Para pausas medidas en nanosegundos, o cuando necesitas que la llamada se reanude de forma fiable después de una señal, prefiere time_nanosleep(). Para pausar hasta un momento concreto del reloj de pared, usa time_sleep_until().
Consideraciones de rendimiento
La función usleep() es ligera y utiliza llamadas de suspensión del sistema operativo, por lo que tiene una sobrecarga de CPU insignificante. Sin embargo, la duración real de la pausa depende del planificador del sistema operativo, lo que significa que no se garantiza una precisión inferior a un milisegundo. Para mayor precisión o para seguir las prácticas modernas de PHP, considera time_nanosleep() o time_sleep_until().
Conclusión
En conclusión, la función usleep() es una forma sencilla de pausar la ejecución de un script en entornos PHP heredados. Al comprender sus requisitos de unidades, el comportamiento de temporización dependiente del sistema operativo y su estado de obsolescencia, puedes utilizarla de manera efectiva para retardos simples o migrar a alternativas modernas como time_nanosleep() o time_sleep_until().