Foros del Web » Programando para Internet » PHP »

enviar 80 mil mails diarios

Estas en el tema de enviar 80 mil mails diarios en el foro de PHP en Foros del Web. Hola, Necesito enviar 80 mil mails diarios a una base de datos de alumnos de cursos (e-learning) con información diversa. Actualmente lo hago pero tengo ...
  #1 (permalink)  
Antiguo 21/11/2006, 13:04
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
enviar 80 mil mails diarios

Hola,

Necesito enviar 80 mil mails diarios a una base de datos de alumnos de cursos (e-learning) con información diversa.

Actualmente lo hago pero tengo problemas con Mysql, se cae.

Lo hago de la siguiente manera:

Selecciono el mail de la base de datos, lo envio y lo marco como enviado, luego sigo con el siguiente, uno tras otro hasta completar los 80 mil, eso demora como 5 horas.

todo usando phpmailer. sin embargo mysql se satura con las 160.000 mil consultas (selecciono 80.000 , marco 80.000)

alguien conoce algo más eficiente.

saludos
Daniel
  #2 (permalink)  
Antiguo 21/11/2006, 14:25
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
pues lo de mandar 80K mails en 5 horas me parece una cosa de lo mas normal, ya que la carga es bastante.

Ahora que se te sature el mysql me parece que tienes problemas con el indexado de la tabla o simplemete la estructura no es buena, por mas 80K consultas, en 5 horas no es tanta carga.
  #3 (permalink)  
Antiguo 21/11/2006, 14:45
 
Fecha de Ingreso: julio-2003
Ubicación: Viña del mar
Mensajes: 111
Antigüedad: 20 años, 9 meses
Puntos: 0
la tabla es muy simple

id int(11) PRI NULL auto_increment
mail varchar(255)
nombre varchar(255)
enviado int(11) 0

selecciono el mail:
select id, mail, nombre from my_tabla where enviado=0

envio el mail y actualizo la tabla

update my_tabla set enviado=1 where id=$id_mail_enviado

En realidad lo que quisiera es enviar esos mails en menos de una hora...

Saludos
  #4 (permalink)  
Antiguo 21/11/2006, 16:06
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 19
channnnn enviar esos mail en menos de una hora ?????

no ... no creo que puedas hacerlo .. ya que mas arriba te dicen que lo mas normal es enviar esos mail en aproximadamente 5 horas ... ahora tu problema creo que se podria solucionar configurando bien el archivo mysql.ini

si tenes alguna novedad avisa asi aprendemos todos ..
saludos!!!
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
  #5 (permalink)  
Antiguo 21/11/2006, 17:54
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Cita:
Iniciado por grid Ver Mensaje
la tabla es muy simple

id int(11) PRI NULL auto_increment
mail varchar(255)
nombre varchar(255)
enviado int(11) 0

selecciono el mail:
select id, mail, nombre from my_tabla where enviado=0

envio el mail y actualizo la tabla

update my_tabla set enviado=1 where id=$id_mail_enviado

En realidad lo que quisiera es enviar esos mails en menos de una hora...

Saludos
No tengo experiencia en el tema, pero algo que se me ocurre para reducir las querys (y supongo que un poco el tiempo) podria ser no realizar ese update enviado = 1 en cada envio y en lugar de esto, realizar dicho update solamente cuando el envio de un email haya fallado...

En vez de tener, por ejemplo, 10 000 selects y 10 000 updates... tendrias 10000 selects y unos (cuandos o pocos) updates para los emails que hayan fallado.

Quiza con esta modificacion tengas que cambiar el modo de traer los mails con el select, pero debe haber alternativas, supongo.


Me interesa mucho este tema, a ver si alguien con mas experiencia en esto nos ilumina y aprendemos todos jeje


Saludos.
__________________
Federico.

Mi página: www.jourmoly.com.ar

Última edición por Fridureiks; 21/11/2006 a las 18:00
  #6 (permalink)  
Antiguo 21/11/2006, 18:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En vez de tener, por ejemplo, 10 000 selects y 10 000 updates... tendrias 10000 selects y unos (cuandos o pocos) updates para los emails que hayan fallado.

Creo que por ahí va la cosa .. registra sólo los eventos que son a destacar .. es decir .. los que "falle" el envio .. sino, asumes que se envió. Lamentablemente así no sabras por donde se quedó PHP al enviar los e-mails si se te cae el servidor de correo, o Mysql o lo que esté por médio.

Deberías consultar en el foro de Base de datos -> Mysql por si hay optimización que realizar a tu configuración de Mysql .. o bien tal vez hasta cambiar de versión de Mysql o de tipo de tabla incluso .. o ajuste a los tipos de datos de tu tabla y sobre todo para que indiques si en los logs de Mysql ves algún mensaje de error cuando se "cae" .. para evaluar mejor el problema.

Lo más gracioso es que tu servidor de correo "aguanta" (cual usas .. por curiosidad bajo que S.O.?). Ten presente que la cantidad de e-mails a enviar es considerable, no estás teniendo presente las condiciones de tu conexión a internet en ese servidor ni el tiempo de proceso que emplea tu servidor de correo en sí ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 21:39.