• Bannato User Attivo

    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&#58; <[email protected]>";
    # invio
    if &#40;mail &#40;$to, $subject, $tosend, $headers&#41;&#41;
    &#123; 
    $msg = "**<font color=\"#0000ff\">Email correttamente inviata a&#58; $to**</font>
    ";
    &#125;
    else
    &#123;
    $msg = "**<font color=\"FF0000\">Tentativo di invio fallito a&#58; $to**</font>
    ";
    &#125;
    echo $msg;
    &#125;
    

    Come lo modifico? :mmm:


  • Moderatore

    Ciao 🙂
    Potresti aggiungere un campo al db con valore 0

    Ciclare 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ò 🙂
    :ciauz:


  • User Attivo

    Così fai una pausa di 10 secondi ogni 50 invii

    
    $query = mysql_query&#40;"SELECT * FROM tab_newsletter WHERE attivo = '1'", $db&#41;;
    $inviati = 1;
    while &#40;$dati = mysql_fetch_array&#40;$query&#41;&#41;
    &#123;
    $inviati ++;
    if &#40;&#40;$inviati % 50&#41; == 0&#41;
      sleep&#40;10&#41;;
    
    # preparo i dati per la mail
    $to = $dati&#91;email&#93;;
    $subject = $_POST&#91;'oggettonews'&#93;;
    $tosend = $testo;
    $pcode = $dati&#91;pcode&#93;;
    $tosend .= "\n\nPer cancellarti http://www.xxx.it/_newsletter/cancella.php?pcode=$pcode&email=$to";
    $headers = "From&#58; <[email protected]>";
    # invio
    if &#40;mail &#40;$to, $subject, $tosend, $headers&#41;&#41;
    &#123;
    $msg = "**<font color=\"#0000ff\">Email correttamente inviata a&#58; $to**</font>
    ";
    &#125;
    else
    &#123;
    $msg = "**<font color=\"FF0000\">Tentativo di invio fallito a&#58; $to**</font>
    ";
    &#125;
    echo $msg;
    &#125;
    
    

  • Bannato User Attivo

    Ahhhhh,
    bellissima la funzione sleep 😄 non 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? 😮