usleep()
Neste artigo, exploramos a função usleep() do PHP: visão geral, funcionamento e exemplos de uso.
Neste artigo, vamos nos concentrar na função usleep() do PHP. Forneceremos uma visão geral da função, como ela funciona e exemplos de seu uso.
Introdução à função usleep()
A função usleep() é uma função integrada do PHP que foi utilizada para pausar a execução de um script por um número especificado de microssegundos. Ela permitia atrasos com temporização muito precisa.
Nota:
usleep()foi depreciada no PHP 8.1 e removida no PHP 8.2. Para PHP moderno, usetime_nanosleep()outime_sleep_until().
A função usleep() recebe um único argumento, que é o número de microssegundos para pausar a execução do script. Um microssegundo equivale a um milionésimo de segundo, portanto 1000000 microssegundos correspondem a um segundo. Essa granularidade mais fina é o que diferencia usleep() de sleep(), que aceita apenas segundos inteiros.
Sintaxe
usleep(int $microseconds): void| Argumento | Tipo | Descrição |
|---|---|---|
$microseconds | int | O número de microssegundos para interromper o script. 1 segundo = 1000000 microssegundos. |
Como usar a função usleep()
Usar a função usleep() é muito simples. Basta chamar a função e passar o número de microssegundos para pausar a execução do script. Veja um exemplo:
Como usar a função usleep()?
Neste exemplo, chamamos a função usleep() com o argumento 500000 para o número de microssegundos a pausar a execução do script. Isso pausa a execução do script por 500 milissegundos (0,5 segundos). Em seguida, exibimos uma mensagem no console indicando que estamos dormindo, aguardamos o tempo especificado e então exibimos outra mensagem indicando que terminamos de dormir.
Medindo o atraso
Como os microssegundos são fáceis de contar errado, é útil medir o tempo real decorrido com microtime(). O exemplo abaixo dorme por um quarto de segundo e imprime a duração real:
<?php
$start = microtime(true);
usleep(250000); // 250000 microseconds = 0.25 seconds
$elapsed = microtime(true) - $start;
echo "Slept for " . round($elapsed, 3) . " seconds\n";
?>A saída é aproximadamente Slept for 0.25 seconds — pode ser um pouco mais longa porque o sistema operacional decide quando acordar o processo.
Quando usar usleep()
usleep() é útil sempre que uma pausa de segundo inteiro com sleep() é demasiado grosseira:
- Limitação de taxa — adicionar um pequeno intervalo entre chamadas repetidas de API ou iterações de loop para ficar abaixo de uma cota de requisições.
- Polling — aguardar uma fração de segundo antes de verificar novamente um arquivo, bloqueio ou fila.
- Limitação de saída — desacelerar uma animação de CLI ou exibição de progresso para que seja legível.
Para pausas medidas em nanossegundos, ou quando você precisa que a chamada retome de forma confiável após um sinal, prefira time_nanosleep(). Para pausar até um momento específico do relógio, use time_sleep_until().
Considerações de desempenho
A função usleep() é leve e usa chamadas de sleep do sistema operacional, portanto tem sobrecarga de CPU desprezível. No entanto, a duração real da pausa depende do escalonador do SO, o que significa que a precisão abaixo de um milissegundo não é garantida. Para maior precisão ou práticas modernas de PHP, considere time_nanosleep() ou time_sleep_until().
Conclusão
Em conclusão, a função usleep() é uma maneira direta de pausar a execução de scripts em ambientes PHP legados. Ao compreender seus requisitos de unidade, comportamento de temporização dependente do SO e status de depreciação, você pode utilizá-la efetivamente para atrasos simples ou migrar para alternativas modernas como time_nanosleep() ou time_sleep_until().