PHP: Pausar la ejecución de un script

Aunque os parezca increíble en ocasiones nos interesa que PHP vaya más lento, por ejemplo, a la hora de mostrar el mensaje de login y password erróneo cuando alguien intenta un ataque de fuerza bruta.

¿Cómo podemos hacer que PHP retrase sus respuestas 1 o 2 segundos? Pues con la instrucción sleep().

Os pongo un ejemplo:

<?php
sleep(2); // Se detiene 2 segundos en continuar la ejecución
?>

El valor modificador de sleep debe ser un número entero que determina los segundos de la pausa.

Si queremos hacer la pausa en microsegundos tenemos la instrucción usleep() y si queremos que la pausa se mida en nanosegundos tenemos time_nanosleep().

Comentarios

Pepe Barrascout Ortiz ha dicho que…
Hola, tengo una pregunta.

Si estoy haciendo una consulta y en el bucle le pongo que se detenga 10 segundos y este bucle se repite 30 veces, el script se tardará 300 segundos.

Si el tiempo de ejecución de php está puesto en 60 segundos, ¿este script se va a completar, o la función sleep(), inicia el contador de nuevo cada diez segundos?

Gracias por la ayuda.

Saludos.
Gabriel Cuesta ha dicho que…
No lo he probado nunca, pero creo que el tiempo de ejecución de Script al ser marcado por el administrador del servidor es un contador de tiempo externo a PHP que no se ve afectado por sleep, por lo que seguramente te daría un mensaje de Time Out y pararía la ejecución.
Pepe Barrascout Ortiz ha dicho que…
Gracias, he hecho varias pruebas y aparentemente si funciona, pero no se si realmente reinicia el contador o no.

Saludos
Anónimo ha dicho que…
Parse error: syntax error, unexpected 'sleep' (T_STRING), expecting ',' or ';' in C:\xampp\htdocs\practica\registrarse.php on line 78

eso me dice ami... :(
Unknown ha dicho que…
Porque no tienes que poner sleep(). sino sleep(3);
Anónimo ha dicho que…
Hola trabajo con php y sqlserver y cuando realiza una peticion ajax al tardar mas de 60 segundos muestra la peticion como cancelada que puedo hacer para que pueda esperar mas tiempo
Gabriel Cuesta ha dicho que…
Tendrás que revisar la configuración de tiempo de ejecución máximo del script en el servidor en el fichero php.ini o en el fichero .htaccess, depende de la configuración de tu servidor será en uno o en otro.

Utiliza phpinfo(); para ver como tienes configurado el servidor de PHP
Nacho ha dicho que…
ini_set('memory_limit', '-1');
ini_set('max_execution_time', 3000);

Con esto aumentan el tiempo de ejecución a lo que necesiten.