Estoy enviando mediante un bucle while cientos de correos, cada 10 correos que envio dejo 10 segundos libres con un sleep.
La cuestión es que los correos están todos en una base de datos, hospedada en el mismo server y todo, pero no se por qué puede tardar hasta 10 o 20 segundos en enviar cada correo. (y cada vez creo que tarda más, incluso más de 1 minuto por correo)
Lo he probado en 3 servidores diferentes en 3 hostings distintos, y obtengo el mismo resultado... ¿alguien sabría decir por qué?
El código que uso es este:
Código PHP:
$correos=mysql_query("select correo from correos where estado IN ('1', '2') ");
$contador=1;
echo "Iniciando...";
while($row_correos=mysql_fetch_array($correos)){
echo $contador ."-";
if($contador o/o 10==0){ //no me deja poner el simbolo "por ciento" en el foro :P
echo "Enviados" . $contador; echo '<br>';
sleep(10);
}
$email=$row_correos["correo"];
$clave=$row_correos["clave"];
$sfrom="[email protected]"; //cuenta que envia
$sdestinatario=$email; //cuenta destino
$ssubject="hola"; //subject
$shtml=" mensaje en HTML"; //mensaje
$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";
mail($sdestinatario,$ssubject,$shtml,$sheader);
$contador++;
}
echo "Todos han sido enviados. Total: " . $contador ;
Y lo mismo pasa al imprimir "Enviados", primero imprime "Envia" después de 3 o 4 segundos "dos" quedando así "Enviados" y luego el número.