Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] envío masivo de emails. Se cierra el script antes de terminar

Estas en el tema de envío masivo de emails. Se cierra el script antes de terminar en el foro de PHP en Foros del Web. Buenos días Tengo un script que lo ejecuto en Cron, que manda un email a cada cliente, cada vez es un numero diferente de emails. ...
  #1 (permalink)  
Antiguo 25/06/2013, 03:13
 
Fecha de Ingreso: febrero-2013
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 1
Pregunta envío masivo de emails. Se cierra el script antes de terminar

Buenos días

Tengo un script que lo ejecuto en Cron, que manda un email a cada cliente, cada vez es un numero diferente de emails. Cuando el envío es pequeño, no pasa nada. Pero con un envío de 200 emails, ya me falla.

No hay problema de limitación de emails, ni a la hora ni por dominio, porque donde lo tengo, no hay limitación.

Creo que el problema viene del tiempo que está inactivo el navegador. Pasados unos 5 minutos el script se para.

Cuando lo ejecuto con el cron me devuelve: curl: (52) Empty reply from server y si lo ejecuto manualmente, llega un momento que redirige a la página de inicio.

El código sería el siguiente


set_time_limit(0);
ini_set('memory_limit', '512M');
$index = 0;
while('mientras clientes'){
llamo a la función que envía el mail.

(He probado a poner aqui:
print_r($index);
flush();
)
$index++;
sleep(3);
}


El sleep lo pongo para que exista un margen entre el envío, para evitar que lo coja como spam. Si en sleep pongo 2 segundos, en vez de 3, me manda más emails antes de cerrarse.

Lo de print lo he probado al leer el siguiente tema [URL="http://www.forosdelweb.com/f18/envio-masivo-email-con-funcion-mail-dentro-bucle-849705/"]http://www.forosdelweb.com/f18/envio-masivo-email-con-funcion-mail-dentro-bucle-849705/[/URL]

pero no me funciona.

Y el flush para vaciar el buffer y enviar los datos escritos. Pero nada. Nosé si lo estoy usando mal o que.

Creo que la solución es no tener tanto tiempo la página inactiva mientras se ejecuta el script, pero no se me ocurre que más hacer.

O quizá sea otro fallo que ha alguien más le ha pasado y sepa como arreglarlo.

Muchas gracias
  #2 (permalink)  
Antiguo 25/06/2013, 03:48
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 12 años, 1 mes
Puntos: 84
Respuesta: envío masivo de emails. Se cierra el script antes de terminar

Cita:
Iniciado por Nymeria84 Ver Mensaje
Buenos días

Tengo un script que lo ejecuto en Cron, que manda un email a cada cliente, cada vez es un numero diferente de emails. Cuando el envío es pequeño, no pasa nada. Pero con un envío de 200 emails, ya me falla.

No hay problema de limitación de emails, ni a la hora ni por dominio, porque donde lo tengo, no hay limitación.

Creo que el problema viene del tiempo que está inactivo el navegador. Pasados unos 5 minutos el script se para.

Cuando lo ejecuto con el cron me devuelve: curl: (52) Empty reply from server y si lo ejecuto manualmente, llega un momento que redirige a la página de inicio.

El código sería el siguiente


set_time_limit(0);
ini_set('memory_limit', '512M');
$index = 0;
while('mientras clientes'){
llamo a la función que envía el mail.

(He probado a poner aqui:
print_r($index);
flush();
)
$index++;
sleep(3);
}


El sleep lo pongo para que exista un margen entre el envío, para evitar que lo coja como spam. Si en sleep pongo 2 segundos, en vez de 3, me manda más emails antes de cerrarse.

Lo de print lo he probado al leer el siguiente tema [URL="http://www.forosdelweb.com/f18/envio-masivo-email-con-funcion-mail-dentro-bucle-849705/"]http://www.forosdelweb.com/f18/envio-masivo-email-con-funcion-mail-dentro-bucle-849705/[/URL]

pero no me funciona.

Y el flush para vaciar el buffer y enviar los datos escritos. Pero nada. Nosé si lo estoy usando mal o que.

Creo que la solución es no tener tanto tiempo la página inactiva mientras se ejecuta el script, pero no se me ocurre que más hacer.

O quizá sea otro fallo que ha alguien más le ha pasado y sepa como arreglarlo.

Muchas gracias
No estoy seguro pero creo que el problema lo tienes al limitar la memoria del script en 512Mb, si envías correos por encima de ese límite de memoria el script se dentendrá.

En vez de 512Mb prueba a poner -1. y nos cuentas qué tal, sino no se qué puede ser.
  #3 (permalink)  
Antiguo 25/06/2013, 08:15
 
Fecha de Ingreso: febrero-2013
Mensajes: 25
Antigüedad: 11 años, 10 meses
Puntos: 1
Respuesta: envío masivo de emails. Se cierra el script antes de terminar

Cita:
Iniciado por guardarmicorreo Ver Mensaje
No estoy seguro pero creo que el problema lo tienes al limitar la memoria del script en 512Mb, si envías correos por encima de ese límite de memoria el script se dentendrá.

En vez de 512Mb prueba a poner -1. y nos cuentas qué tal, sino no se qué puede ser.
Muchas gracias.
Lo he cambiado pero seguía dando fallo.

Creo que he encontrado el problema. Era en el comando del cron.
Yo usaba usr/bin/curl http://dominio, que lo ejecutaba como en el navegador. Lo he cambiado a usr/bin/php /home/usuario/ruta para ejecutar el php, y así me ha hecho todo el envío.

Espero que le pueda servir a alguien.

Muchas gracias

Etiquetas: email, limites
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:17.