Foros del Web » Programando para Internet » PHP »

Demasiados mails para mi sistema de mailing

Estas en el tema de Demasiados mails para mi sistema de mailing en el foro de PHP en Foros del Web. Hola , pues mi problema es que uso el siguiente codigo que encontre por ahi para hacer los mailings del boletin de mi pagina web ...
  #1 (permalink)  
Antiguo 20/08/2003, 14:14
Avatar de lochorui  
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 899
Antigüedad: 22 años, 9 meses
Puntos: 2
Demasiados mails para mi sistema de mailing

Hola , pues mi problema es que uso el siguiente codigo que encontre por ahi para hacer los mailings del boletin de mi pagina web pero claro lo que me hace es mandar todo del tiron y ahora que tengo 1000 personas inscritas pues el server lo dejo un poco loco durante ese minuto.

Me gustaria si se puede hacer que envie esto de 200 en 200 o algo asi.

El codigo es el siguiente:

Código PHP:
//Connecto a la bd
$dbh mysql_connect("localhost""user""pass");
     
mysql_select_db ("musikaid_altas"$dbh);
$sql "SELECT * FROM boletin";
$result mysql_query($sql);



//cuenta que envía
$sfrom="[email protected]";

//recojo de la page donde envio
$subject $_POST['subject'];
$message $_POST['message'];

//las cabeceras HTTP para indicar en tu e-mail que parte es HTML 
$sheader="From:".$sfrom."\nReply-To:".$sfrom."\n";
$sheader=$sheader."X-Mailer:PHP/".phpversion()."\n";
$sheader=$sheader."Mime-Version: 1.0\n";
$sheader=$sheader."Content-Type: text/html";


$emails_fallo=0// Inciar contador de fallos

//Send message loop
While ($row mysql_fetch_array($result)) {
$email $row['email'];

echo 
"<font class='normal'>".$email;
$message=stripslashes($message);
//Take notice that we've included $subject and $message below
if (mail("$email","$subject","$message","$sheader")){
echo 
"<font class='normalnegrita'> --> OK<br>";
} else {
$emails_fallo++;
echo 
"<font class='normalaviso'> --> FALLÓ<br>";
}

}

if (
$emails_fallo >0){
echo 
"No se han podido enviar todos los e-mails<br>";
} else {
echo 
"¡Información enviada!<br>";
}


//Close the database connection
mysql_close();
?> 
Un saludo
  #2 (permalink)  
Antiguo 21/08/2003, 05:52
Avatar de lochorui  
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 899
Antigüedad: 22 años, 9 meses
Puntos: 2
nadie ha tenido el mimso problema que yo?

Alguin usa algun script que vaya bien?

Un saludo
  #3 (permalink)  
Antiguo 21/08/2003, 09:02
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años, 7 meses
Puntos: 0
Hola, alomojor con un limit en la sentencia sql lo consigues aunque no estoy muy seguro .

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #4 (permalink)  
Antiguo 21/08/2003, 09:05
Avatar de lochorui  
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 899
Antigüedad: 22 años, 9 meses
Puntos: 2
Claro si se que es haciendo un limit de 50 en 50 por ejemplo , el problem es que no se como hacer pàrta que despues de lso primeros 50 me envie a los siguientes y asi sucesivamente

Un salduo y gracias
  #5 (permalink)  
Antiguo 21/08/2003, 09:16
Avatar de Pino  
Fecha de Ingreso: abril-2003
Ubicación: Cangas do Morrazo, Pontevedra, Galicia, España, Europa, etc
Mensajes: 490
Antigüedad: 21 años, 7 meses
Puntos: 0
Hola, con un for lo consigues, vas contando de 50 en 50 o de 200 en 200. Aunque también lo puedes hacer manualmente (es coña).

Un saludo
__________________
Pïno
Webmaster de Programas Lynx
Usuario Registrado de Linux #327681

Mi cuerpo en windows, pero mi mente pensando en linux.
  #6 (permalink)  
Antiguo 21/08/2003, 09:23
Avatar de lochorui  
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 899
Antigüedad: 22 años, 9 meses
Puntos: 2
Pero haciendo un simple for el servidor no estaria igual de recargado?

No tendria que hacer un envio de 100 por ejplo refrescar la pagina , otro envio asi....

Como seria el for que comentas?

Un saludo
  #7 (permalink)  
Antiguo 22/08/2003, 23:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Te suenan los sistemas (rutinas) de paginado de consultas SQL? (de Msyql .. como la classe de Webstudio .. o si usas el buscador del foro encontraras muchas ..)...

Bien, .. se trata de que en lugar de tener ese "link" normal (<a href ...>) de "siguiente" ..harías tu redireccionamiento automático con:

Código PHP:
header("location: pagina.php?siguientes=$siguientes");
exit; 
Si inicias $siguientes tipo:

Código PHP:
if (isset($_GET['siguientes'])){
$siguientes=$_GET['siguientes']+10;
} else {
$siguientes=1;

Y tu consulta .. usando LIMIT $siguientes,10

Pero .. esto no le daría mucho "respiro" a tu servidor SMTP .. Para darle un tiempo entre "pagina" deberías usar por ejemplo:

sleep(tiempo) .. en conjunto con set_time_limit() para darle más tiempo de ejecución a tu script ..

E .. incluso podrías usar las funciones de ignore_user_abort()bort" para dejar a PHP trabajando en "background" y que envie los e-mails (con esos tiempos de espera .. etc) .. En ese si actualmente generas alguna salida HTML de algún mensaje de error/exito .. deberías generar un archivo "log" (fopen() .. fwrite() .. etc)

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 13:06.