Avatar billede yev Nybegynder
30. marts 2005 - 22:32 Der er 7 kommentarer og
1 løsning

Sende mange emails

Jeg har implementeret et forum i PHP og gør brug af en MySQL db. Jeg har implementeret en funktion, der sender emails ud til brugerne af forummet, når der oprettes et nyt indlæg.

Igen til det evindelige problem:
Jeg ønsker således at sende 100-200 emails ud, og jeg får en intern server fejl (sikkert en timeout), når jeg benytter php's mail funktion. Jeg har læst utallige indlæg om netop dette emne og jeg har ikke fundet nogle fornuftige løsninger. Synes ikke at "zend" (http://www.zend.com/codex.php?id=347&single=1) gør det særlig meget bedre, selv om det gør brug af serverens SMTP...

Jeg har nok implementeret det forkert, for som tingene ser ud nu, foregår udsendingen af mail i forbindelse med oprettelsen af det nye indlæg. Med andre ord, er det den bruger, der opretter det nye indlæg, der skal vente på at php får sendt alle disse mails ud. Og det er jo ikke ligefrem hensigtsmæssigt.

1. Er der ikke bedre (hurtigere) metoder at sende mail fra en webserver med?

2. Kan man undgå at brugeren, der opretter linket skal vente på at der bliver sendt mail til andre brugere? Her tænker jeg på om man kan aktivere et script, som kører "bag ryggen" på brugeren, og hvor brugeren altså ikke behøver vente på, at dette køres færdigt?
Avatar billede bromer Nybegynder
30. marts 2005 - 22:37 #1
1. SMTP protokollen [1] dikterer at man kun må sende mails til 100 af gangen, så det bedste du kan gøre er at dele dine udsendelser op i 100 af gangen.

2. Jeg har tidligere - med succes - lagt mails ned i en mail tabel, hvor jeg havde et cronscript der stod og sendte dem ud hvert andet minut eller noget i den stil.

[1] http://www.faqs.org/rfcs/rfc821.html
Avatar billede ravsted-dk Nybegynder
30. marts 2005 - 22:40 #2
jeg kan tilbyde dig en email adresse, hvor du kan sende og til 300 mail af gangen
Avatar billede Slettet bruger
30. marts 2005 - 22:42 #3
Uanset hvilken metoder du benytter til at sende mailene (at forbinde direkte til en SMTP server er typisk hurtigst (send evt. i bunker af 100 modtagere (BCC))), skal du gøre det i baggrunden. Dette kan du gøre ved at starte et PHP (eller andet) script i baggrunden (se exec, system mv. funktionerne) fra det script, der kaldes, når man tilføjer et indlæg. En anden mulighed er at lade et cronjob checke for nye indlæg (hvert minut eller hvad der nu er acceptabelt), og sende de relevante mails. En tredie mulighed er at lade database systemet vha. stored procedures og triggers kalde mailing scriptet, når det modtager relevante inserts.
Avatar billede yev Nybegynder
30. marts 2005 - 23:03 #4
Ok, løsningen ligger nok i brugen af cronjobs. I princippet er jeg (næsten) lige glad med hvor længe det tager at sende mailene ud, bare det kan køre i baggrunden.
Problemet er, at jeg ikke er stødt på cronjobs før, så jeg ved ikke, hvordan dette skal gøres. Kan man bede serveren om at eksekvere en php-fil, eller hvordan? Er det simpelt?
Avatar billede bromer Nybegynder
30. marts 2005 - 23:16 #5
Hvis det er en Unix server kan du oprette en crontab ved at skrive crontab -e ved en kommandoprompt. I Windows mener jeg at programmet hedder add. Hvis du ikke har systemrettigheder på serveren kan det godt blive et problem.

I så fald kan du lave scriptet som et almindeligt scirpt man skal besøge igennem en browser og så bruge noget webbaseret cron.
Avatar billede yev Nybegynder
30. marts 2005 - 23:30 #6
Det er hos "b-one", og det kører Unix. Men jeg har ikke systemrettigheder, så vidt jeg ved.

Idet brugeren opretter et indlæg (underliggende kører en php-fil, der opretter indlægget), kan det så ikke lade sig gøre, at dette script starter et andet script, som så sender mailene ud??

bromer -> Med webbaseret cron tænker du på steder som cronjob.de?
Avatar billede bromer Nybegynder
30. marts 2005 - 23:37 #7
Det kommer an på hvordan serveren er sat op. Du kan måske som tidligere nævnt starte et script med exec(). Jeg kan lige prøve at finde et link til noget webcron.
Avatar billede yev Nybegynder
11. februar 2006 - 14:12 #8
Lukker spm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester