Harald wrote:
>>> Hvordan gør man det? Jeg kan jo ikke sende mails fra den php som opretter
>>> posten da personen der poster så skal sidde og vente på at alle mails er
>>> sendt før han kan komme videre?
>> ja - det vil umiddeltbart være det "smarteste" - ved mindre du er ude
>> efter en længere løsning. Jeg har nogle scripts kørende rundt omkring som
>> sender f.eks. 200 mails ud i batches - de sendes indenfor 1 sekund (altså
>> er så scriptet ekskveret - og de ligger i kø på maskinen). Så det er ikke
>> noget som brugeren der poster på nogen måde vil mærke.
>
> Men hvis der skal sendes mange mail og SMTP serveren er f.eks. smtp.mail.dk
> så tror jeg da ikke på at det kan sendes i løbes at 1 sekund, men php har
> måske en form for kø? Eller hvordan virker det?
>
Nu spurgte jeg ikke mere specifikt ind til hvorledes dit setup er - men
regner med du hoster på et webhotel eller ligende?
PHP har ikke nogen kø som sådan. Den sender den til SMTP serveren hvor
der er en kø. Det samme sker faktisk når du sender en mail via
smtp.mail.dk - din mail bliver sat i en kø. Dvs. når mailen er "sluppet"
fra dit mailprogram kan der i princippet godt være en ventetid før den
når modtageren på 1 minut, 1 time eller 1 døgn - hvis der er lang kø hos
SMTP'en. (Og det sker faktisk - har oplevet det flere gange hos især
Cybercity).
Men derimod når du sender den via PHP sender den den typisk direkte til
den lokale SMTP - som typisk i de fleste tilfælde er localhost. Derfor
er der ikke den samme ventetid som når du sender via et normalt
mailprogram. Der vil den så ligge i kø - og dit PHP script er ekskveret
færdig - imens arbejder serveren selv videre med at sende mailen.
Google evt. på SMTP queue - så burde du få lidt information omkring det
:) Men du kan lave en simpelt test.
<?php
for($i=0;$i<50;$i++) {
mail("test@example.com","Test af hastighed","Tra lala");
}
?>
Tjek selv hvor hurtigt du kan sende 50 mails med ovenstående script.
--
Johan Holst Nielsen
Freelance PHP Developer -
http://phpgeek.dk