Foros del Web » Programando para Internet » PHP »

PHP OO Que el proceso no se corte

Estas en el tema de Que el proceso no se corte en el foro de PHP en Foros del Web. Buenas tardes. A ver quiero hacer un sistema de envio de email, pero antes queria saber como puedo cuando pulse el boton de enviar este ...
  #1 (permalink)  
Antiguo 19/12/2013, 07:17
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Que el proceso no se corte

Buenas tardes.

A ver quiero hacer un sistema de envio de email, pero antes queria saber como puedo cuando pulse el boton de enviar este comience con el procesos de envio, y siga enviando hasta que finalice, pero... si el cliente pulsa F5 en el navegador el proceso no se cierre es decir que siga un proceso, le pondre una barrita, no se si me explico bien...

Como se hace este tipo de cosas ?
  #2 (permalink)  
Antiguo 19/12/2013, 07:24
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Que el proceso no se corte

Puedes usar ajax, si todavia no recibe una respuesta poner una alerta.con javascript
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #3 (permalink)  
Antiguo 19/12/2013, 07:32
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Que el proceso no se corte

si pero ajax... si el cliente me pulsa F5 en el navegador este ajax se va al garete.... lo que quiero saber es como hacer para no interrumpir el proceso una vez iniciado
  #4 (permalink)  
Antiguo 19/12/2013, 09:26
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Que el proceso no se corte

La barra de proceso que he montado a sido esta:

http://www.pedroventura.com/demos/ht...gress_bar.html

Mediante ajax voy haciendo el envio de email, y me devuelve done = true para que el script me marque un nuevo %, el problema es lo que expongo antes, si me pulsa F5 ese proceso se cancela :( yo lo que quiero esque se mantenga hasta que acabe.

Supongo que es el servidor el que tiene que hacer este porcentaje...... Pero no se como hacerlo y mantener el proceso activo aun si cierra el navegador.
  #5 (permalink)  
Antiguo 19/12/2013, 09:30
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Que el proceso no se corte

A ver, eso es javascritp y html5 que tiene que ver con PHP?

Entiendes de que PHP solo se encarga del servidor y no se entiende con las acciones del cliente como refrescar pagina, click y demas interacciones?

Tienes que bloquear con javascript las acciones que puedan interrumpir la carga (bloqueo de determinados clic, bloqueo de teclas, eventos de cierre de pestaña, etc.)

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #6 (permalink)  
Antiguo 19/12/2013, 09:52
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Que el proceso no se corte

Cita:
Iniciado por jonni09lo Ver Mensaje
A ver, eso es javascritp y html5 que tiene que ver con PHP?

Entiendes de que PHP solo se encarga del servidor y no se entiende con las acciones del cliente como refrescar pagina, click y demas interacciones?

Tienes que bloquear con javascript las acciones que puedan interrumpir la carga (bloqueo de determinados clic, bloqueo de teclas, eventos de cierre de pestaña, etc.)

Saludos
Pero como ??¿??¿
  #7 (permalink)  
Antiguo 19/12/2013, 09:55
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: Que el proceso no se corte

Ya te dije que es lo que tienes que hacer... STFW

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #8 (permalink)  
Antiguo 19/12/2013, 10:06
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Que el proceso no se corte

la mejor forma de hacer esto es ejecutar el script php por consola.
es decir cuando el usuario preciona el boton vos deberias ejecutar el script mediante la funcion exec() u otra parecida.
Algo parecido a esto.

if(precionaBoton){
exec( ../script/script.envios.email.php);
}

le podes pasar parametro y demas cosas, lee sobre la funcion(o parecidas) en la wiki.
  #9 (permalink)  
Antiguo 19/12/2013, 10:19
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Que el proceso no se corte

Cita:
Iniciado por luis010182 Ver Mensaje
la mejor forma de hacer esto es ejecutar el script php por consola.
es decir cuando el usuario preciona el boton vos deberias ejecutar el script mediante la funcion exec() u otra parecida.
Algo parecido a esto.

if(precionaBoton){
exec( ../script/script.envios.email.php);
}

le podes pasar parametro y demas cosas, lee sobre la funcion(o parecidas) en la wiki.
ok gracias, ahora nos entendemos ;)
  #10 (permalink)  
Antiguo 19/12/2013, 11:06
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 14 años, 9 meses
Puntos: 27
Respuesta: Que el proceso no se corte

Cita:
Iniciado por nfo Ver Mensaje
ok gracias, ahora nos entendemos ;)
igual, para hacer esto es algo mas parecido a esto

exec( 'php ../script/script.envios.email.php' );

y mas parametros,

Para hacer las pruebas abri una terminal y ejecuta

servidor# php ../script/script.envios.email.php

esto es para ver si el servidor tiene todas las librerias que necesita(no funciona en todos los servidores debido a falta de configuracion solamente) y aparate si hacer echo en el script (script.envios.email.php), podes ir viendo los errores.

esta es la forma de hacerlo con linux(casi 99% de los servidores web PHP son en linux), si estas en windows buscar algo mas de info, pero no creo que cambie mucho
  #11 (permalink)  
Antiguo 20/12/2013, 05:47
 
Fecha de Ingreso: mayo-2009
Ubicación: Japon
Mensajes: 60
Antigüedad: 14 años, 11 meses
Puntos: 12
Respuesta: Que el proceso no se corte

si quieres que siga la ejecución aun cuando el cliente aborta su conexión, tienes que agregar ignore_user_abort(true) al comienzo del script

ten en cuenta que esto hara que se siga ejecutando es script aun cuando se aya terminado el enlace con el cliente, así que toma cuidado... sobre todo en scripts que sabes que se ejecutan de forma infinita y pueden dar error

por ejemplo, si tienes un set_time_limit(0) en un while y dentro del mismo script el ignore_user_abort(1); este script crea un hilo infinito, que al final terminara tirando el servidor

Código PHP:
<?php
ignore_user_abort
(1);

// ... codigo
?>
  #12 (permalink)  
Antiguo 22/12/2013, 06:03
nfo
 
Fecha de Ingreso: octubre-2008
Ubicación: EsPaCiO TiEmPo
Mensajes: 408
Antigüedad: 15 años, 6 meses
Puntos: 5
Respuesta: Que el proceso no se corte

Cita:
Iniciado por nksn Ver Mensaje
si quieres que siga la ejecución aun cuando el cliente aborta su conexión, tienes que agregar ignore_user_abort(true) al comienzo del script

ten en cuenta que esto hara que se siga ejecutando es script aun cuando se aya terminado el enlace con el cliente, así que toma cuidado... sobre todo en scripts que sabes que se ejecutan de forma infinita y pueden dar error

por ejemplo, si tienes un set_time_limit(0) en un while y dentro del mismo script el ignore_user_abort(1); este script crea un hilo infinito, que al final terminara tirando el servidor

Código PHP:
<?php
ignore_user_abort
(1);

// ... codigo
?>
Perfecto , lo tendre en cuenta.

Etiquetas: corte, proceso
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 23:10.