Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Enviar boletines con servdor limitando el nº de destinatarios por hora

Estas en el tema de Enviar boletines con servdor limitando el nº de destinatarios por hora en el foro de PHP en Foros del Web. Hola amigos tengo un problema con unas aplicaciones para el envío de boletines que he programado. El caso es que en la mayoría de servidores, ...
  #1 (permalink)  
Antiguo 25/05/2011, 03:58
Avatar de Tollelle  
Fecha de Ingreso: enero-2005
Mensajes: 64
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta Enviar boletines con servdor limitando el nº de destinatarios por hora

Hola amigos tengo un problema con unas aplicaciones para el envío de boletines que he programado.

El caso es que en la mayoría de servidores, me litiman el número de correos enviados... en este caso, me limitan a 25 correso cada 2 minutos y a 200 correos cada hora... y se me ocurrió esta programación pero me satura y bloquea la web...

¿como hacen para enviar ahora los boletines personalizados a los suscritos? me han sugerido cms de envíos pero no hacen lo que quiero... ya que cada usuario decide el tipo de suscripción y la información que quiere recibir...

Les agradezco cualquier ayuda o sugerencia o consejo.

Código PHP:
<?php include("../../conex.php");
$itc=0;
$selectu=mysql_query("SELECT * FROM usuarios WHERE boletin='1' AND correo!='' $where  ORDER BY correo ASC",$conexion);
while (
$rowu = @mysql_fetch_array($selectu))
{
            if(
ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$"$rowu[correo])){$correos.="$rowu[correo],"$itc++;}
}

        
$selectub=mysql_query("SELECT * FROM boletin ORDER BY correo ASC",$conexion);
        while (
$rowub = @mysql_fetch_array($selectub))
        {
            if(
ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$"$rowub[correo])){$correos.="$rowub[correo],";$itc++;}
        }
echo 
"<strong>NO CERRAR EL NAVEGADOR </strong><br />
Procesadon $itc correos<br /><br />"
;
        
$i=1;$it=1;$is=1;
$ary explode(',',$correos);
for(
$ip=0;$ip<count($ary);$ip++)
{
  if(
$it!=25)
  { echo 
"$it - Envio mail a -> $ary[$ip]<br />"; }
  else
  { 
     if(
$is==8)
     { echo 
"<strong>IT=$it HAY QUE ESPERAR 46 minutos</strong><br />"sleep(2800); 
     echo 
"$it - Envio mail a ->  $ary[$ip]<br />";
      
$is=1$it=1; }
     else
     { echo 
"<strong>IT=$it HAY QUE ESPERAR 2 minutos</strong><br />"sleep(120); 
     echo 
"$it - Envio mail a ->  $ary[$ip]<br />";
     
$is++; $it=1;}
  }
$i++;$it++;

}
echo 
"<br /><strong>EJECUCIÓN COMPLETADA </strong><br />
$itc correos enviados"
;
?>
Gracias y un saludo
  #2 (permalink)  
Antiguo 25/05/2011, 07:46
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 4 meses
Puntos: 145
Respuesta: Enviar boletines con servdor limitando el nº de destinatarios por hora

hola Tollelle, ciertamente no es la mejor opciones, estas generando un loop con millones de procesos, recuerda q cada vuelta que da el for y while ejecuta los procesos que corresponden dentro de ese ciclo.

Te recomiendo que veas sobre Cron, para programatar tareas, por ejemplo en hosting con cpanel es incluso mas facil, es casi como programar una agenda y decirle el comando o script que quieres que se ejecute.

En todo caso te recomiendo no enfocarte ni desgastarte en email masivos, es el medio de marketing mas ineficiente. A no ser que sean personas suscritas por voluntad propia y que realmente necesitan la info que enviaras, pero si solo pretendes hacer spam te daras cuenta que es una perdida de tiempo.

Saludos.
__________________
http://chicho.ninja yiaaaa
  #3 (permalink)  
Antiguo 25/05/2011, 09:07
Avatar de Tollelle  
Fecha de Ingreso: enero-2005
Mensajes: 64
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Enviar boletines con servdor limitando el nº de destinatarios por hora

Hola Cherivera, los loops que hay sólo generan 2 bucles uno WHILE inicial que archiva en una variables los correos de dos tablas diferentes y luego el FOR que lee esas variables de correos, una vez dentro lo que haago son comparaciones para deternimar el numero del envío y definirle el tiempo de espera.

En cron no lo veo viable ya que sería realmente lo mismo pero sin darle al botón de enviar, serían más pasos otra tabla en la base de datos q almacene los boletines pendientes... pero los bucles serían los mismo (creo) ya que si programo 3 cron a horas diferentes... tengo q saber siempre cuantos suscritos tengo... y necesito automatizar el proceso.

Y el boletín de novedades, ofertas y noticias siempre son correos autorizados por los usuarios, no hablo de spam ni correo no deseado, son correos informativos que la gente nos pide que le enviemos.

Un saludete ;).
  #4 (permalink)  
Antiguo 26/05/2011, 09:09
Avatar de chichote
Colaborador
 
Fecha de Ingreso: diciembre-2004
Ubicación: Santiago - Chile
Mensajes: 1.868
Antigüedad: 19 años, 4 meses
Puntos: 145
Respuesta: Enviar boletines con servdor limitando el nº de destinatarios por hora

No habia visto los SLEEP, bueno es logico que la aplicacion no responda, es porque tu mismo le estas dando esa opcion de ir a dormir.

Aun asi me quedo con los cron, he trabajado con varios script profesionales para boletines y envio de correos masivos, y todos los que he probado utilizan cron para hacer los envios, desde mi punto de vista no tiene mucho sentido dejar corriendo en el browser una aplicacion si puedes ejecutar esas rutinas por debajo y te olvidas. Te has preguntado que pasa si hay un corte de LUZ y se apaga tu pc, para solucionar eso deberias tener creadas campañas y contabilizar los envios por cada correo para retomar el envio y saber a quien le enviaste y quienes estan pendientes, en el fondo crece mucho mas tu script, ya no serian un par de ciclos con algunas rutinas.

Me imagino que debes tener miles de correos inscrito en tus newsletter para estar creando un script, supongamos que sean solamente 5mil correos, eso quiere decir que tu script debiera estar corriendo durante 25 horas, osea mas de un dia. Mejor trabaja con cron y te olvidas de los envios.

saludos.
__________________
http://chicho.ninja yiaaaa

Etiquetas: boletin
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 08:00.