Temporizzare l'invio delle newsletter

Parlando con un amico che stava sviluppando una newsletter mi diceva che stava cercando una soluzione per interporre qualche secondo tra l'invio di una newsletter e l'altra ed evitare problemi con il server.

Mi piacerebbe sapere:

  • E' necessario prendere una precauzione del genere?
  • Come fare per ritardare l'invio.

Partendo dal presupposto che gli indirizzi dei destinatari siano in un array avevo provato una soluzione del genere ma non va.

foreach ($array_indirizzi as $valore)  {
   $differisci = time () + 3;
   do {
      $ora = time ();
      if ($ora == $differisci)  {
         // Spedisci
                                                break;
      }
   }
   while ($ora < $differisci);
}

Nella mia scarsa esperienza non saprei dire perché si blocca tanto più che scrivendo così

foreach ($array_indirizzi as $valore)  {
   $differisci = time () + 3;
   do {
      $ora = time ();
      if ($ora == $differisci)  {
         // Spedisci
                                                exit;
      }
   }
   while ($ora < $differisci);
}

Spedisce al primo indirizzo dopo 3 secondi

inviato 10 anni fa
usecram
X 0 X

prova così potrebbe andare :

<?php

foreach ($array_indirizzi as $valore)  {

   //invio newsletter

   sleep(1);

}

?>

sembra che si blocchi ma è perche allunga il caricamento di un secondo per ogni iterazione :) quindi attento al timeout :)

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Beh effettivamente funziona grazie mille...

Però dovendo spedire, chessò a 200 indirizzi, supererei abbondantemente il timeout...dovrei prevedere probabilmente di spedire le newsletter a blocchi di n indirizzi...

A questo punto prima di complicarsi enormemente la vita la mia domanda è:

vale la pena prendere un accorgimento del genere?

Qualcuno ha affrontato il problema?

risposto 10 anni fa
usecram
X 0 X

Mi basta un parere vale la pena o no?

risposto 10 anni fa
usecram
X 0 X

Scusami se non ti ho risposto dormivo :)

cmq prova a dividere l'array e a fare l'operazione con vari aggiornamenti della pagina es

1-10 email no refresh

11-20 refresh e invia

21-30 refresh e  invia

in modo da non andare in timeout

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Grazie per la disponibilità trashofmasters, su un altro forum mi hanno risposto così:

alcuni isp se ricevono troppe email dallo stesso mittente in un arco di tempo limitato

cestinano tutto ritenendolo spam. L'unica cosa è simulare un invio manuale con tempi e pause casuali:

<?php 
set_time_limit(3600); 
$dest_1 = "email@site.com"; 
for ($k = 0; $k <= 100; $k++) { 
$messaggio = 'bla bla bal'; 
mail($dest_1, "titolo", $messaggio); 
if (is_int($k/rand (2, 10))){ 
    sleep(rand (2, 20)); 
} 
} 
echo "test Email N°-[$k] su: $dest_1 | Stato: --> OK"; 
?>
risposto 10 anni fa
usecram
X 0 X

Quando bisogna inviare molte email bisogna parlarne con il proprio hoster-isp per concordare insieme la tecnica più idonea alle politiche di sicurezza implementate sul server.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Beh direi che adesso ho le idee abbastanza chiare a riguardo. Grazie  :bye:

risposto 10 anni fa
usecram
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda