Foros del Web » Programando para Internet » PHP »

Limitar el tiempo de ejecución de un while

Estas en el tema de Limitar el tiempo de ejecución de un while en el foro de PHP en Foros del Web. Supongamos que se ejecuta un bucle while y en una de las repeticiones se queda colgado el proceso que se realiza, ¿cómo se puede limitar ...
  #1 (permalink)  
Antiguo 11/01/2011, 17:04
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Limitar el tiempo de ejecución de un while

Supongamos que se ejecuta un bucle while y en una de las repeticiones se queda colgado el proceso que se realiza, ¿cómo se puede limitar el tiempo de ejución de una repetición del bucle?. No puedo limitar el script completo con set_time_limit() porque hay veces que el script tarda mucho tiempo en ejecutarse por completo.

Gracias.
__________________
dominioslibres.info
  #2 (permalink)  
Antiguo 11/01/2011, 19:11
Avatar de jariza  
Fecha de Ingreso: agosto-2003
Ubicación: Málaga
Mensajes: 1.449
Antigüedad: 20 años, 8 meses
Puntos: 10
Respuesta: Limitar el tiempo de ejecución de un while

Hola,

¿Has probado a poner un set_time_limit al inicio del bucle while y otro al final?
En el primero defines el tiempo que quieres darle al while y en el segundo el tiempo para lo que queda de script.

Un saludo.
  #3 (permalink)  
Antiguo 11/01/2011, 19:22
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Limitar el tiempo de ejecución de un while

Cita:
Iniciado por jariza Ver Mensaje
Hola,

¿Has probado a poner un set_time_limit al inicio del bucle while y otro al final?
En el primero defines el tiempo que quieres darle al while y en el segundo el tiempo para lo que queda de script.

Un saludo.
Pero te refieres a dentro del while?...

Código:
while () {
     set_time_limit();
     .......
     set_time_limit();
}
Creo que cuando se ejecuta set_time_limit(), sea en la parte que sea, afecta a todo el script en general, ¿no es así?.
__________________
dominioslibres.info
  #4 (permalink)  
Antiguo 12/01/2011, 09:04
Avatar de jariza  
Fecha de Ingreso: agosto-2003
Ubicación: Málaga
Mensajes: 1.449
Antigüedad: 20 años, 8 meses
Puntos: 10
Respuesta: Limitar el tiempo de ejecución de un while

No, me refiero a justo antes y justo después:

Código PHP:
Ver original
  1. while () {
  2.      .......
  3. }
  #5 (permalink)  
Antiguo 12/01/2011, 12:56
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Limitar el tiempo de ejecución de un while

Si lo coloco antes es lo que te decía, que no quiero limitar la ejucución general del script, sólo quiero limitar la ejecución de cualquiera de las repeticiones del bucle, pero no de todas en conjunto.

Creo que set_time_limit() no es una buena solución.
__________________
dominioslibres.info
  #6 (permalink)  
Antiguo 12/01/2011, 12:58
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Limitar el tiempo de ejecución de un while

Si lo coloco antes es lo que te decía, que no quiero limitar la ejucución general del script, sólo quiero limitar la ejecución de cualquiera de las repeticiones del bucle, pero no de todas en conjunto.

Creo que set_time_limit() no es una buena solución.
__________________
dominioslibres.info
  #7 (permalink)  
Antiguo 12/01/2011, 13:02
Avatar de jariza  
Fecha de Ingreso: agosto-2003
Ubicación: Málaga
Mensajes: 1.449
Antigüedad: 20 años, 8 meses
Puntos: 10
Respuesta: Limitar el tiempo de ejecución de un while

Pero así no deberías estar limitando la ejecución general, set_time_limit resetea el contador cada vez que se le invoca.

Quedaría así:

<trozo superior del script, sin límite de tiempo>
set_time_limit(lim1);
<bucle while con límite de tiempo lim1>
set_time_limit(lim2);
<resto del script, con límite de tiempo lim2, que puedes hacer cero para dejarlo ilimitado>
  #8 (permalink)  
Antiguo 12/01/2011, 13:13
 
Fecha de Ingreso: octubre-2009
Mensajes: 245
Antigüedad: 14 años, 6 meses
Puntos: 17
Respuesta: Limitar el tiempo de ejecución de un while

Cita:
Iniciado por jariza Ver Mensaje
Pero así no deberías estar limitando la ejecución general, set_time_limit resetea el contador cada vez que se le invoca.

Quedaría así:

<trozo superior del script, sin límite de tiempo>
set_time_limit(lim1);
<bucle while con límite de tiempo lim1>
set_time_limit(lim2);
<resto del script, con límite de tiempo lim2, que puedes hacer cero para dejarlo ilimitado>
La funcion set_time_limit no funciona de esa forma. la opciones que tienes es o dejar que el script se ejecute hasta que termine sin tiempo limite o establece un tiempo de ejecucion del while y si pasa ese tiempo aplica un break con eso sales del ciclo y continua de forma normal.
  #9 (permalink)  
Antiguo 12/01/2011, 13:41
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Limitar el tiempo de ejecución de un while

Cita:
Iniciado por JaimeSavines Ver Mensaje
....o establece un tiempo de ejecucion del while y si pasa ese tiempo aplica un break...
Eso es precisamente lo que quiero. pero... ¿cómo se hace sin usar set_time_limit?
__________________
dominioslibres.info
  #10 (permalink)  
Antiguo 24/02/2011, 08:03
 
Fecha de Ingreso: febrero-2011
Ubicación: Bogota
Mensajes: 2
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Limitar el tiempo de ejecución de un while

no se si te sirva la respuesta, pero podria ser asi:

Código PHP:

//tomo el valor de tiempo
$tiempo_actual time();
while(){
//tomo el tiempo nuevo (ejecucion del script)
$nuevo_tiempo time();
//comparo los tiempos
if(($nuevo_tiempo $tiempo_actual) >= $duracion_deseada_en_segundos )
{
   break;
}
else
{
   
//aca se ejecutaria lo que tenga en el while
}

  #11 (permalink)  
Antiguo 24/02/2011, 08:32
 
Fecha de Ingreso: junio-2003
Ubicación: Sevilla
Mensajes: 210
Antigüedad: 20 años, 10 meses
Puntos: 1
Respuesta: Limitar el tiempo de ejecución de un while

Cita:
Iniciado por jjolumahe Ver Mensaje
no se si te sirva la respuesta, pero podria ser asi:

Código PHP:

//tomo el valor de tiempo
$tiempo_actual time();
while(){
//tomo el tiempo nuevo (ejecucion del script)
$nuevo_tiempo time();
//comparo los tiempos
if(($nuevo_tiempo $tiempo_actual) >= $duracion_deseada_en_segundos )
{
   break;
}
else
{
   
//aca se ejecutaria lo que tenga en el while
}

No sirve porque si un proceso queda colgado dentro de una repetición del while nunca se podrá determinar el $nuevo_tiempo y el proceso continuará colgado.
__________________
dominioslibres.info

Etiquetas: limitar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:24.