Avatar billede googolplex Novice
15. september 2003 - 00:12 Der er 18 kommentarer og
2 løsninger

mail() med PHP

Jeg har lavet en mailing-liste, men jeg er lidt i tvivl om hvor mange e-mails mail()-funktionen kan håndtere og hvad jeg skal gøre for at mit script ikke går dødt midt i det hele ?
Avatar billede ztyxx Nybegynder
15. september 2003 - 00:22 #1
skal du være sikker på ikke at php giver timeout, kan du bruge serverens SMTP http://www.zend.com/codex.php?id=347&single=1
Avatar billede googolplex Novice
15. september 2003 - 00:25 #2
Skulle der være nogen problemer med mail() hvis det drejer sig om under 1000 emails ? Hvad med 100 ?
Avatar billede jammerlab Nybegynder
15. september 2003 - 00:54 #3
samme... den timer ud efter 30 mails... men det kan du godt forhindre hvis du ændre timeouten :) havde en php command engang man lige kunne skrive men kan ikke huske den... fik også afvide at det var smartere med sockets.
Avatar billede jammerlab Nybegynder
15. september 2003 - 00:55 #4
http://www.eksperten.dk/spm/261023

der kan du se det :) Havde samme problem og dette var løsningen.
Avatar billede tipsen Nybegynder
15. september 2003 - 01:08 #5
Den grundlæggende forskel er, at mail() åbner og lukker forbindelsen til smtp-serveren for hver eneste mail der skal sendes - dette koster meget tid og er unødvendigt! Ovenstående link fra ztyxx peger på en smtp-klasse, som basalt set kobler op til smtp-serveren, sender alle de mails der skal sendes og derefter lukker forbindelse - det er væsentligt hurtigere end at åbne og lukke forbindelsen gentagne gange!

Det tager dog stadig tid at sende 1000 mails og hvis det tager for lang tid, kan du søge i de spørgsmål jeg har deltaget i det sidste stykke tid - ét af dem omhandlede, hvordan man kunne sende et nyhedsbrev til mange abonnenter af flere omgange for at mindske belastningen af serveren!
Avatar billede googolplex Novice
15. september 2003 - 16:58 #6
Jeg kan se i min phpinfo() at 'max_execution_time' er sat til 120 hos min udbyder. Hvor mange mails kan man sende på 120 sekunder ?

De kører i Safe Mode, så er den eneste mulighed ikke at gøre som ztyxx siger ? Men timer den så ikke stadig ud efter 120 sekunder ?
Avatar billede ztyxx Nybegynder
15. september 2003 - 17:17 #7
nej, den vil ikke lave timeout, da det bliver smidt over på SMTP´en at sende, og ikke PHPs mail()
Avatar billede googolplex Novice
15. september 2003 - 17:45 #8
Hvordan kan det være, er det ikke stadig en del af scriptet ?

Den klasse du vidste mig, er den ligesom de PEAR-klasser der findes ?

Hvor mange mails vil du skyde på kan man sende på 120 sekunder ? (Der er jo ingen grund til det helt store, hvis jeg kan sende de mails jeg har brug for med mail() :) )
Avatar billede googolplex Novice
16. september 2003 - 23:43 #9
ztyxx ?
Avatar billede ztyxx Nybegynder
17. september 2003 - 16:13 #10
jeg kan ikke umiddelbart give et bud på hvor mange mails php´s mail() kan håndtere på 120 sekunder, det kan jo afhænge af flere ting, serverens hastighed osv.

den klasse jeg postede, fungerer i princippet som de pear-klasser der findes
Avatar billede tipsen Nybegynder
17. september 2003 - 16:47 #11
SMTP-klassen har ikke umiddelbart noget med PEAR klasserne at gøre udover at det ér en klasse, men det er jo blot fordi programmeringen er objektorienteret.

Dette betyder så også, at klassen ikke kræver andre komponenter for at fungere, som det ofte er tilfældet med PEAR-klasser (Ikke at det nødvendigvis er et problem).

Derudover er et meget godt argument for at benytte SMTP-klassen i stedet for mail() at det belaster både webserver samt smtp-server meget mindre, hvilket selvfølgelig kan være ligegyldigt, hvis det er din egen server. Jeg har dog set eksempler, hvor webhoteller lukker for muligheden for at bruge mail() pga. misbrug fra webhotellets kunder - selv en god server kan ikke kompensere for inefficient programkode.
Avatar billede googolplex Novice
17. september 2003 - 19:03 #12
Lige en lille sidste ting, før tipsen (læg svar) og ztyxx (læg svar) får point :)

Siden klassen er lavet i OO PHP, hvorfor står der så:

<?php
<%

Klasse

%>
?>

Hvorfor <% & %> ?
Avatar billede googolplex Novice
17. september 2003 - 19:04 #13
Nå ja, og kan jeg fjerne <% & %> ?
Avatar billede tipsen Nybegynder
17. september 2003 - 19:11 #14
Fordi begge tags kan benyttes til at indikere start på php-kode - <% %> er vistnok asp-stil! Du sletter bare <% %> hvis din php er konfigureret til at benytte <?php ?>!
Avatar billede googolplex Novice
17. september 2003 - 19:13 #15
Takker tipsen, så mangler vi bare et svar fra ztyxx :-)
Avatar billede ztyxx Nybegynder
18. september 2003 - 18:06 #16
jeg benyttede den på et tidspunkt, og med stor hjælp fra tipsen, ellers havde jeg nok ikke fået det til at virke, og der fjernede jeg <% %> før det ville køre.
Avatar billede googolplex Novice
18. september 2003 - 19:05 #17
Jeg kan stadig ikke få den til at virke, kan jeg se dit eksempel ztyxx ?
Avatar billede ztyxx Nybegynder
19. september 2003 - 12:49 #18
her er det spørgsmål jeg oprettede om det, http://www.eksperten.dk/spm/205869
Avatar billede googolplex Novice
19. september 2003 - 16:57 #19
Der var den Ztyxx, havde lavet samme fejl som dig, smtp-serveren hed ikke localhost !!
Avatar billede ztyxx Nybegynder
21. september 2003 - 01:06 #20
hehe, der kan man bare se
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