Foros del Web » Programando para Internet » PHP »

Realizar una acción cuando acabe un proceso.

Estas en el tema de Realizar una acción cuando acabe un proceso. en el foro de PHP en Foros del Web. Hola a [email protected]; Tengo un proceso que requiere bastante procesado (es decir toma un tiempo)... me gustaría mostrar una página diciendo que este proceso puede ...
  #1 (permalink)  
Antiguo 18/12/2005, 17:17
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 13 años, 2 meses
Puntos: 4
Realizar una acción cuando acabe un proceso.

Hola a [email protected];

Tengo un proceso que requiere bastante procesado (es decir toma un tiempo)... me gustaría mostrar una página diciendo que este proceso puede llevar unos segundos. Lo que no se es como hacer para redireccionar una vez se haya llevado a cabo todo el procesado.

¿Que funciones o aspectos puede mirar para llevar esto acabo?

Gracias.
  #2 (permalink)  
Antiguo 18/12/2005, 20:41
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 13 años, 3 meses
Puntos: 1
Una forma de hacerlo sería usando la misma página para todo, diferenciando por una variable GET la acción a ejecutar: procesar o esperar. Al entrar intentas coger un mutex; si puedes cogerlo realizas la opción q sea, si no quiere decir que estás ejecutando aun.
Un mutex es un mecanismo de exclusión, de forma que sólo el proceso que lo tenga puede ejecutar. El resto esperará hasta que quede libre el mutex. La forma más fácil de hacer esto con PHP es crear un directorio (proceso que el sistema operativo ya hace exluyentemente).
Código PHP:
if(!mkdir("cerrojo")){ // Coger mutex (crear directorio)
  // el mutex ya está cogido
  
if($_GET['action'] == "procesar"){
    
// Si puede haber dos procesamientos a la vez, ejecutar directamente
    // Si no pueden procesar a la vez esperar y volver a intentarlo
    
while(!mkdir("cerrojo")){
      
wait(1000); // Un segundo, lo que quieras
    
}
    
// Aquí el procesamiento en ambos casos
  
}else{
    
// Aun se está procesando, generar la página de espera
    // Mediante javascript, refrescar la página recordando el parámetro GET
  
}
}else{
  if(
$_GET['accion'] == "procesar"){
    
// Todo el procesamiento aqui
  
}else{
    
// Aquí la página de resultados
  
}
  
rmdir("cerrojo"); // Liberar el mutex (borrar directorio)

No recuerdo como refrescar la página con javascript, era algo de meta equivalent o algo así.
Un saludo
__________________
Mi página personal: Julián Urbano
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 13:14.