- Home
- Categorie
- Coding e Sistemistica
- Coding
- Newsletter: inviare 50 email e poi fare una pausa
-
Newsletter: inviare 50 email e poi fare una pausa
Per non impegnare troppo a lungo il server mi piacerebbe fare un invio delle email per la newsletter "a scaglioni".
Ovvero, inviare una 50ina di email e poi bloccare l'invio o fino al click su un pulsante oppure fermare il processo per 10 secondi.
Io accedo al db, leggo la tabella utenti e seleziono tutti quelli che hanno "1! nel campo "newsletter".
Poi faccio un ciclo while... ecco come integro la pausa?
$query = mysql_query("SELECT * FROM tab_newsletter WHERE attivo = '1'", $db); while ($dati = mysql_fetch_array($query)) { # preparo i dati per la mail $to = $dati[email]; $subject = $_POST['oggettonews']; $tosend = $testo; $pcode = $dati[pcode]; $tosend .= "\n\nPer cancellarti http://www.xxx.it/_newsletter/cancella.php?pcode=$pcode&email=$to"; $headers = "From: <[email protected]>"; # invio if (mail ($to, $subject, $tosend, $headers)) { $msg = "**<font color=\"#0000ff\">Email correttamente inviata a: $to**</font> "; } else { $msg = "**<font color=\"FF0000\">Tentativo di invio fallito a: $to**</font> "; } echo $msg; }
Come lo modifico?
-
Ciao
Potresti aggiungere un campo al db con valore 0Ciclare solo 50 mail con il flag a 0.
Una volta spedita metti il campo di sopra a 1.Usare cron per mandarne ogni ora, ad esempio.
Se tutte quelle della newsletter son settate a 1, setti il blocco a 0.
Lo vedo un casinotto però
-
Così fai una pausa di 10 secondi ogni 50 invii
$query = mysql_query("SELECT * FROM tab_newsletter WHERE attivo = '1'", $db); $inviati = 1; while ($dati = mysql_fetch_array($query)) { $inviati ++; if (($inviati % 50) == 0) sleep(10); # preparo i dati per la mail $to = $dati[email]; $subject = $_POST['oggettonews']; $tosend = $testo; $pcode = $dati[pcode]; $tosend .= "\n\nPer cancellarti http://www.xxx.it/_newsletter/cancella.php?pcode=$pcode&email=$to"; $headers = "From: <[email protected]>"; # invio if (mail ($to, $subject, $tosend, $headers)) { $msg = "**<font color=\"#0000ff\">Email correttamente inviata a: $to**</font> "; } else { $msg = "**<font color=\"FF0000\">Tentativo di invio fallito a: $to**</font> "; } echo $msg; }
-
Ahhhhh,
bellissima la funzione sleepnon la conoscevo!
Grazie.
Ottimo anche il modo per mandarne 50 e poi fermarsi e poi ripartire dall'indirizzo successivo.Secondo voi il gestore del server mi fa "brutte storie" con questo modo di gestire l'invio delle newsletter?