In dk.edb.internet.webdesign.serverside.php, Torben Heikel Vinther wrote:
> Jeg er ved at lave en nyhedsbrev-funktion, hvor jeg bl.a. gerne vil kunne
> sende en nyhedsmail til alle som har tilmeldt sig listen. Jeg har lavet en
> test, som i og for sig virker efter hensigten, men jeg kunne godt tænke mig
> at få et par gode råd mht. sikkerhed, effektivitet mv. i forbindelse med at
> sende mails ud til mange på én gang.
[...kode...]
> Hvordan skal man forholde sig til en evt. timeout, når der cykles igennem
> tabellen med e-mails og sendes mails ud? Ovenstående virkede fint med 100
> mails, men hvad når der skal sendes til flere hundrede...eller tusinde?
> Og hvad skal man gøre for at få en meddelelse om, hvor mange mails der er
> blevet sendt afsted?
Når du skal sende mails ud til mange (jeg ville mene alt over et par
hundrede) vil det mest sikre, effektive og bedste være at bruge SMTP
via en socketforbindelse på serveren. Mail() er fint nok til mindre
mængder emails, men problemet med mail() er, at funktionen starter een
proces på serveren pr. emailadresse. Har du f.eks. 800 emails der skal
sendes ud starter du 800 processer på serveren på samme tid, og det
kan godt give problemer, worst-case værende at serveren går ned på
grund af de 800 simultane processer.
Med en socketforbindelse til SMTP-serveren på værtsmaskinen sender du
alle emailadresser til serveren på en gang, hvorefter SMTP står for at
sende dem ud. På den måde starter du kun een proces, der varer i den
tid det tager at sende listen af emailadresser til SMTP hvorefter SMTP
står for at afsende emailene. Du kan læse om fsockopen() på:
<
http://dk.php.net/fsockopen>
For at få vist hvor mange der er blevet sendt ud til kan du bruge
mysql_num_rows(). F.eks.:
if (!$recipients_total = mysql_num_rows($query)) {
print "<p>Der opstod en fejl relateret til databasen,";
print " nyhedsbrevet blev ikke sendt ud til abonnenterne.</p>";
} else {
print "<p>Nyhedsbrevet blev sendt ud til".$recipients_total."
abonnenter.</p>";
}
Håber det kan bruges.
--
| Jonas @ 55.75, 12.42 | <
http://verture.net/> |
"Only by counting could humans demonstrate
their independence of computers."