Foros del Web » Programando para Internet » PHP »

Una pregunta importante

Estas en el tema de Una pregunta importante en el foro de PHP en Foros del Web. Que hay? Tengo una duda que es realmente importante para el desarrollo una pagina que toy intentando. Necesito que cuando un usuario haga clik en ...
  #1 (permalink)  
Antiguo 01/09/2003, 09:20
 
Fecha de Ingreso: agosto-2003
Mensajes: 6
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta Una pregunta importante

Que hay? Tengo una duda que es realmente importante para el desarrollo una pagina que toy intentando. Necesito que cuando un usuario haga clik en un sitio el php mande un mail con mucho peso a una direccion de correo. Ya lo he implementado con el phpmailer el problema es que hasta que no se ha terminado de enviar el mail, el php se detiene, y pueden ser varios minutos. Me gustaría saber si es posible que se de la orden de enviar el mail y sin esperar a que se envie siga adelante el php, e independientemente de lo que haga ese usuario el mail se termine de enviar, aunque el usuario cerrara el navegador. Pos si me habeis entendido mal la informacion que se envía está en el servidor, no la sube el usuario, este solo da la orden de que el servidor la envie y no a ese usuario sino a otra dirección.
  #2 (permalink)  
Antiguo 01/09/2003, 10:04
 
Fecha de Ingreso: julio-2003
Mensajes: 45
Antigüedad: 20 años, 8 meses
Puntos: 0
El problema puede ser por que PHP consume más memoria de la que tiene predeterminada.

Puedes subirle los mbytes desde el php.ini, pero normalmente con 8 o 10 mbytes sobra.

Si no es esto, postea el error,ya que sin verlo es un poco dificil ayudarte.
__________________
Saludos,

Miguel

SAITSERVER >> www.saitserver.com <<
Calidad y Compromiso garantizados en Alojamiento Web.
  #3 (permalink)  
Antiguo 01/09/2003, 10:11
 
Fecha de Ingreso: agosto-2003
Mensajes: 6
Antigüedad: 20 años, 7 meses
Puntos: 0
El problema no es ningun error, creo que no has entendido bien mi mensaje, a lo mejor no está del todo claro.

Para que nos entendamos quiero que el usuario de una orden para que se envie un mail, pero que no tenga que estar esperando en la pagina que da la orden para que termine de enviarse el mail.

Tal y como lo tengo ahora el usuario tiene que esperar a que el servidor envie el mail, que pueden ser varios minutos y eso no me vale.

Voy a ser mas grafico, tal como lo tengo el usuario al dar la orden abre el siguiente php:

$mail = new PHPMailer();
$mail->Mailer = "smtp";
$mail->Host = "smtp.com";
$mail->From = "[email protected]";
$mail->FromName = "Boss";
$mail->Timeout=30;
$mail->AddAddress("[email protected]");
$mail->Subject = "Prueba de phpmailer";
$mail->Body = "<b>Nuevo pedido</b>";
$mail->AltBody = "Nuevo pedido";
$mail->AddAttachment("output.zip","pedido.zip");
$exito = $mail->Send();

y hasta que no termina $exito = $mail->Send(); no pasa a la siguiente lines de codio, y yo quisiera que siguiera adelante la ejeccuión mientras se envía el mail

Última edición por yideon; 01/09/2003 a las 10:17
  #4 (permalink)  
Antiguo 01/09/2003, 10:22
 
Fecha de Ingreso: julio-2003
Mensajes: 45
Antigüedad: 20 años, 8 meses
Puntos: 0
ok, perdona.

Nunca he hecho eso, ya que como bien sabes PHP se ejecuta desde el navegador.

Me pillas de lleno

Con php no se si se podrá ( seguro que sí )

Suerte, y ya me contarás si lo solucionas.
__________________
Saludos,

Miguel

SAITSERVER >> www.saitserver.com <<
Calidad y Compromiso garantizados en Alojamiento Web.
  #5 (permalink)  
Antiguo 01/09/2003, 10:56
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 21 años, 4 meses
Puntos: 0
Hola, no lo he probado, pero si usas la funcion de php para llamadas al sistema (en el caso de linux), puede que ejecutando tu script en segundo plano funcione:

system("myscript &");

No se si la funcion es system, me suena q si.

suerte
__________________
Lo importante no es saber sino saber el teléfono del que sabe, jajaja.
  #6 (permalink)  
Antiguo 01/09/2003, 11:41
Avatar de biblio  
Fecha de Ingreso: enero-2002
Ubicación: Urano
Mensajes: 577
Antigüedad: 22 años, 3 meses
Puntos: 0
Cita:
Nunca he hecho eso, ya que como bien sabes PHP se ejecuta desde el navegador.
???.

La ejecución de un script se lleva a cabo en segundos, por no decir en milesimas de segundos.
  #7 (permalink)  
Antiguo 01/09/2003, 11:53
 
Fecha de Ingreso: julio-2003
Mensajes: 45
Antigüedad: 20 años, 8 meses
Puntos: 0
mmmmm....... según que tipo de aplicación.

Si el amigo yideon intenta mandar un e-mail de 10 mBytes mediante la funcion mail de PHP te aseguro que va a tardar un rato.
__________________
Saludos,

Miguel

SAITSERVER >> www.saitserver.com <<
Calidad y Compromiso garantizados en Alojamiento Web.
  #8 (permalink)  
Antiguo 01/09/2003, 13:34
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,
Cita:
Nunca he hecho eso, ya que como bien sabes PHP se ejecuta desde el navegador.
Creo que te has expresado mal. PHP se ejecuta en el servidor. Normalmente lo mandas ejecutar desde el navegador, y se puede parar la ejecucion cancelando la carga desde el navegador.

Puede que el problema sea el tiempo de ejecucion, prueba a aumentar max_execution_time en el php.ini o usar set_time_limit() (www.php.net/set_time_limit). Aun asi, si el usuario se desconecta o cancela la carga, parara la ejecucion.

Y que yo sepa, no hay forma de evitar el tener que esperar a que finalice la funcion.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 02/09/2003, 05:37
 
Fecha de Ingreso: agosto-2003
Mensajes: 6
Antigüedad: 20 años, 7 meses
Puntos: 0
Solucionado, pero de otra forma

Bueno yo lo he solucionado por otro lado, he dado la funcion de servidor de correo a mi servidor. Ahora cuando alguien hace la peticion se guarda el mail en el directorio de la persona a la que quería que se le enviara, así me ahorro el que el usuario tenga que estar esperando y la persona receptora tiene su mail. Gracias a todos.
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:40.