Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ejecutar script luego de cargat un HTML y no antes

Estas en el tema de Ejecutar script luego de cargat un HTML y no antes en el foro de PHP en Foros del Web. Hola como estan? Les comento un rpoblema, tengo un formulario en PHP que toma datos de un usuario y cuando hace clic en "enviar" le ...
  #1 (permalink)  
Antiguo 09/12/2014, 12:47
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Ejecutar script luego de cargat un HTML y no antes

Hola como estan?

Les comento un rpoblema, tengo un formulario en PHP que toma datos de un usuario y cuando hace clic en "enviar" le pasa los datos por POST a el fichero procesar.php

El fichero procesar contiene el siguiente codigo

Código PHP:

<html lang="es">
    <head>
    <meta charset="UTF-8">
        <title>Titulo</title>
        <link rel="stylesheet" href="misestilos.css">
        <link rel="stylesheet" href="estilo_tablas.css">/head>
    <body>
        <div id="agrupar"> 
        <header id="cabecera">  
            <center><img src="logo.jpg" ></center>
        </header>
            
        <nav id="menu"> 
            <ul> 
                <li> No cierre esta ventana hasta que finalice la operación </li>
         
            
            </ul>
        </nav>
            <br><br>
<?php

//Obtenemos los datos del usuario pasados por el fomulario
$variable1  $_POST['uno'];
$variable2 $_POST['dos'];
$variable3 $_POST['tres'];
$variable4 $_POST['cuatro'];

//Esta seccion es la que hace cosas (es un comando de shell script)

echo "<article>";
echo 
"  <table  border=1 id='Grid1'  style='width: 80%'>";
echo 
"<th style='width: 80px'> Atención: Lea lo siguiente </th>";         
echo 
"</tr> <br><br>";
echo 
"<td>";
echo 
"<p>";
echo 
$registro;         //esto es la salida del comando    
echo "</p> <br>";
echo 
"<p>";
echo 
"bla bla bla";
echo 
"</p>";
echo 
"</td>";
echo 
"</table>";  
echo 
"</article>";
echo  
"</body>";
echo  
"</html>";

?>
El tema es que la aplicaion funciona correctamente, pero la pagina procesar.php recien se muestra en el navegador una vez que se completo toda la tarea.

El comando en cuestion puede demorar 10 a 20 minutos y mientras la pagina se queda "como esta" y no quiero que el usuario piense que esta colgada y haga nuevamente clic en el boton enviar.

Lo que quiero hacer es que cuando apreta enviar, la pagina procesar se cargue por completo y luego se ejecute el script el cual a su vez una vez finalizado mostrara el mensaje almacenado en la variable $registro en la pantalla.
  #2 (permalink)  
Antiguo 09/12/2014, 13:38
Avatar de Djoaq  
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 6 meses
Puntos: 38
Respuesta: Ejecutar script luego de cargat un HTML y no antes

Hola , podrías usar Ajax o separar la lógica de tu aplicación y cuando se envié el form haya un php esperando que haga un echo de se esta trabajando y cuanto tu proceso acabe haces un header redirection en función que si tu proceso acabó bien o no .

Código PHP:

if (isset($POST_['bla bla']) && isset($POST_['bla bla']))
{

 if(
$registro){
      
header('Location: exito.php'); //pagina con mensaje confirmación
}else{
    
header('Location: fallo.php');  //pagina con mensaje de error.
}


Un saludo
  #3 (permalink)  
Antiguo 10/12/2014, 05:31
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Ejecutar script luego de cargat un HTML y no antes

Claro pero ese es el problema que tengo, la segunda pgaina que recibe los datos del POST deberia mostrarse mientras se ejecuta el codigo pero no lo hace.

O sea, el usuario hace clic en enviar y pasa la pagina siguiente, deberia mostrarse y ejecutarse el codigo pero no lo hace (si ejecuta el codigo pero no se muestra hasta el final)
  #4 (permalink)  
Antiguo 10/12/2014, 07:56
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Ejecutar script luego de cargat un HTML y no antes

10 min? no te parece mucho para esperar en WEB??
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #5 (permalink)  
Antiguo 10/12/2014, 10:10
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Ejecutar script luego de cargat un HTML y no antes

Cuando dije 10 minutos en realidad fue por poner una cifra, pero el proceso puede demorar hasta una hora o mas por cliente y seguramente en algunos casos dure hasta 8 horas en el server.

Lo que no quiero es que el cliente se quede con la pagina que tiene el boton "enviar" esas 8 horas por que corro el riesgo de que aprete nuevamente el boton enviar.

LO que quiero es que cuando apreta el boton enviar y se le pasa el POST a procesar.php se abra procesar.php le aparezca el mensaje de "espere" y ahi termine

Hoy cuando hace click, el programa llama a procesar.php y recien luego de que el script termina es que aparece la pagina propiamente dicha
  #6 (permalink)  
Antiguo 10/12/2014, 10:17
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Ejecutar script luego de cargat un HTML y no antes

Bueno, replanteo mi pregunta.. NO te parece mucho tiempo para un proceso?
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #7 (permalink)  
Antiguo 10/12/2014, 10:20
Avatar de Hyemin  
Fecha de Ingreso: agosto-2014
Mensajes: 147
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Ejecutar script luego de cargat un HTML y no antes

Es lo que lleva el proceso, es una copia recursiva de muchos miles de ficheros por cliente que se hacen en orden y matcheando cosas.

El proceso no lo hace PHP, mediante la web se invoca una serie de comandos que hace el usuario apache en el server directamente y lo que hace la parte web es simplemente pasarle los paramtros a ese comando

EDIT: Estoy tratando de usar por ejemplo sleep(10) para que dibuje la pagina y recien luego ejecute el codigo pero me sigue sin fuincionar

Última edición por Hyemin; 10/12/2014 a las 10:52

Etiquetas: formulario, html, registro, tabla, variable
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 19:21.