WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   fördröjning (https://www.wn.se/forum/showthread.php?t=36015)

vidir 2009-03-28 14:32

Hej!

jag har en lite funktion som skickar ut email till medlemmar som har inte loggat in (inloggs '0')

problemet jag upplever nu är att det är för många mail samtidigt, skulle behöva en typ av "skicka bara 10 åt gången och vänta par sekunder nästa 10" osv..

Vet inte bara hur man inplementerar det i nedanstående.


$result=mysql_query("select * from site_member WHERE inloggs ='0'");
while ($rad = mysql_fetch_array($result)) {
$id = $rad["id"];
$namn = $rad["namn"];
$email = $rad["email"];

?>

MMC 2009-03-28 15:00

http://se2.php.net/sleep

allstars 2009-03-28 15:18

OT: skriv gärna lite bättre ämnesrader i forumet.
"fördröjning vid utskick av mail" hade varit lämpligt i detta fall.

tartareandesire 2009-03-28 17:32

Har du väldigt många utskick får du nog köra scriptet i omgångar med crontab.

mr_lundis 2009-03-28 19:06

Den inbyggda mail funktionen i PHP är ingen höjdare om man vill göra stora utskick. Ta en titt på Swift Mailer eller kanske Zend_Mail istället.

http://swiftmailer.org/
http://framework.zend.com/manual/en/zend.mail.html

eliasson 2009-03-28 19:17

Citat:

Originally posted by mr_lundis@Mar 28 2009, 18:06
Den inbyggda mail funktionen i PHP är ingen höjdare om man vill göra stora utskick.

Hur menar du då?

MMC 2009-03-28 19:51

Citat:

Ursprungligen postat av eliasson
Citat:

Ursprungligen postat av mr_lundis
Den inbyggda mail funktionen i PHP är ingen höjdare om man vill göra stora utskick.

Hur menar du då?

Den öppnar bland annat en ny SMTP-anslutning för varje mail, vilket ju inte är särskilt optimalt. PHPMailer är ju den vanligaste PHP-klassen för mail.

vidir 2009-03-31 10:10

Tack allihopa, funktionen heter ju "sleep", man lär sig altid något nytt :D

jag använder nu även cron för att köra funktionen i gång i månaden och det kan röra sig om 500 mail den ena gången och 30 mail nästa osv.

Jag satte sleep värdet på 1 sekund mellan varje enskilt mailutskick och det verkar funka bra på webbkontot jag har.

PS! dock hittade jag inte sleep exempel på hur man skickade ut en klunga åt gången.. :rolleyes:

hnn 2009-03-31 11:23

Kod:

if(fmod($i, 2) == 0) { sleep(1) }
Där sover han 1 sekund efter varannat utskick.

Jonas 2009-03-31 13:56

Citat:

Originally posted by vidir@Mar 31 2009, 10:10
Tack allihopa, funktionen heter ju sleep, man lär sig altid något nytt
jag använder nu även cron för att köra funktionen i gång i månaden och det kan röra sig om 500 mail den ena gången och 30 mail nästa osv.
Jag satte sleep värdet på 1 sekund mellan varje enskilt mailutskick och det verkar funka bra på webbkontot jag har.
PS dock hittade jag inte sleep exempel på hur man skickade ut en klunga åt gången..


Varför inte fortsätta köra via Cron?

Fast du hämtar 100st mail åt gången varje gång och skickar ut?

Låt säga att du kör scriptet var 5:e minut, var 5:e minut hämtar scriptet 100 poster och skickar mail till dessa. 5 minuter efter det hämtar det 100 poster till. Och flaggar dom som du skickat till.

Nu är 100st ett exempel, 250 alt. 500 st duger lika bra.

1 sekund och du skickar 500st mail, det är 8minuter extra vänte tid.


Alla tider är GMT +2. Klockan är nu 17:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson