Pregunta

Tengo dos preguntas relativas a la función sleep() en PHP:

  1. ¿Afecta el tiempo de apagado el plazo máximo de ejecución de mis scripts PHP? A veces, PHP muestra el mensaje "tiempo máximo de ejecución de 30 segundos excedido". Aparecerá este mensaje si uso sleep(31)?

  2. ¿Hay algún riesgo cuando se utiliza el sleep()function? ¿Hay que pagar una gran cantidad de rendimiento de la CPU?

¿Fue útil?

Solución

Debe probarlo, solo hay un guión que tiene capacidad para más de su tiempo máximo de ejecución.

<?php
  sleep(ini_get('max_execution_time') + 10);
?>

Spoiler: Bajo Linux, el tiempo de sueño se ignora, pero en Windows, se cuenta como tiempo de ejecución.

Otros consejos

Sólo afecta el tiempo de la escritura no llamadas al sistema como el sueño (). Aparentemente, hay un error en el sueño de Windows se incluye (). Tiempo máximo de ejecución es de tiempo real, no el tiempo de CPU o algo por el estilo. Puede cambiarlo sin embargo que:

  • max_execution_time Directiva en su php.ini. Esta es una configuración global;
  • Uso ini_set () con la directiva anteriormente. Esto va a cambiar sólo para el script se está ejecutando actualmente sólo para que la ejecución;
  • set_time_limit () :. También un cambio local

En cuanto a la diferencia entre los dos últimos, creo max_execution_time es una cantidad fija. En funcionamiento:

ini_set('max_execution_time', 60);

limitará a la secuencia de comandos a 60 segundos. Si después de 20 segundos se llama:

set_time_limit(60);

la secuencia de comandos ahora se limitará a 20 + 60 = 80 segundos.

Desde la página PHP sueño () , hay una nota aportado por los usuarios:

  

Nota: El set_time_limit () Función   y la directiva de configuración   max_execution_time sólo afectan a la   tiempo de ejecución del script mismo.   Cualquier tiempo dedicado a la actividad que   que sucede fuera de la ejecución de la   la escritura tales como llamadas al sistema utilizando   () del sistema, la función sleep (),   base de datos de consultas, etc no está incluido   cuando se determina el tiempo máximo que   el guión ha estado funcionando.

Otros ya han cubierto las bases de sueño () y script PHP límite de tiempo de ejecución, sino que también deben ser conscientes de otro riesgo al utilizar períodos de sueño muy largas.

Por lo general, cuando un navegador envía una petición a un servidor y no recibe datos desde el servidor, la conexión puede tiempo de espera. Este límite de tiempo depende de las configuraciones del navegador, pero he leído que Internet Explorer 7 tiene un valor por defecto de tan sólo 30 segundos, mientras que Firefox tiene un valor por defecto de 115 segundos --Usted puede comprobar su propia configuración en Firefox, vaya a about: config y filtrado de red .http.keep-alive.timeout (el límite de tiempo se especifica en segundos).

Edit: Yo tenía las unidades para network.http.keep-alive.timeout y browser.urlbar.search.timeout confundido. De hecho, es en cuestión de segundos, no décimas de segundo.

a) Sí, se tiene en cuenta para el límite de tiempo (por lo que dormir (31) dará lugar a un error)

b) Se hace lo contrario de un costo de rendimiento de la CPU - que permite que otras aplicaciones utilizan la CPU (cuando una aplicación duerme, el uso de CPU de dicha solicitud será cerca del 0%). Aparte de tomar tiempo lejos del usuario, no puedo pensar en ninguna riesgos de usar este.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top