Tema: mail
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 29/10/2007, 16:45
txels
 
Fecha de Ingreso: mayo-2005
Mensajes: 74
Antigüedad: 19 años
Puntos: 2
Re: mail

of course my baby....

Voy a ponerte un ejemplo de como hacerlo por bloques y recargar la pagina cada cierto tiempo apoyandome en javascript, seguro que hay maneras mejores de hacerlo, pero esta es la que se me ocurre así rápidamente:


Te pongo la estructura y las directrices básicas, el trabajo completo ya lo haces tu (es una orientación, no te voy ha hacer toda la tarea)

la página tiene que llamarse enviomail.php pues se llamará a si misma.

la primera vez hay que ejecutarla así (si queremos enviar desde el principio, y en bloques de 100.

enviomail.php?dsd=1&cuantos=100

<?php

$dsd = $_GET['dsd'];
$bloque = $_GET['cuantos'];
$final = false;

$sql = "Select email From usuariosNews LIMIT ". $dsd .", ". $bloque ." ORDER BY email;";

//aqui haces la conexión y traes los datos,
//
//En algun momento tendrás que contolar el finarl de la tabla si registros es menor que bloque + dsd o algo así...y poner $final = true;
//

//Con un while o un for del tamaño de $bloque, envias el email que tengas que enviar


//ahora preparamos el siguente bloque
$siguienteBloque = $bloque + $dsd + 1;
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>

</head>

<body>
</body>
</html>
<?php
//hay que controlar si se ha llegado al final de los registros entonces

if ($final == false){
?>
<script language="javascript" type="text/javascript">
function enviar(){
//creamos la url que
url = "enviomail.php?dsd=<?php echo $siguienteBloque; ?>&cuantos=100";
window.location = url;
}
valor = setTimeout("enviar()",15000);
//con esta sentencia javascript, son 15000 milisegundos, osea 15 segundos de intervalo entre bloque y bloque.
</script>
<?php

}else{
//El envio se ha completado correctamente.
echo "El envio terminó satisfactoriamente";

//aqui pondríamos el campo enviado a No, para el siguiente envio
$sql = "Update usuariosNews Set enviado=false ";
//y lanzas la query contra la base de datos
}

?>



Por último ya solo me queda recomendarte que para controlar hasta que usuario se realizó el envío, por si en algún momento se rompió el envio, poder retomarlo desde donde lo dejaste...para ello, podrías hacer un campo de "enviado" y actualizarlo al final del script, en caso de que "rompa" el envio, podrás ir a la tabla y ver hasta donde se envió, luego solo tendrás que lanzar el script, y en dsd poner el número del usuario ultimo enviado.


Espero ser de ayuda

Salu2