/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Mail fra forum
Fra : Harald


Dato : 24-02-08 13:48

Jeg har lavet et lille forum og så var det jeg tænkte at det kunne være
smart at hver person der deltager i en tråd kunne få en mail når der blev
postet nyt i tråden. Men jeg vil gerne have bruger specifikke oplysninger i
mailen, dvs. at jeg er nød til at sende mails til alle deltagere enkeltvis.

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?

/H



 
 
Johan Holst Nielsen (24-02-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 24-02-08 18:52

Harald wrote:
> Jeg har lavet et lille forum og så var det jeg tænkte at det kunne være
> smart at hver person der deltager i en tråd kunne få en mail når der blev
> postet nyt i tråden. Men jeg vil gerne have bruger specifikke oplysninger i
> mailen, dvs. at jeg er nød til at sende mails til alle deltagere enkeltvis.
>
> 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.

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Harald (24-02-2008)
Kommentar
Fra : Harald


Dato : 24-02-08 19:02

"Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse
news:47c1aed2$0$90269$14726298@news.sunsite.dk...
> Harald wrote:
>> Jeg har lavet et lille forum og så var det jeg tænkte at det kunne være
>> smart at hver person der deltager i en tråd kunne få en mail når der blev
>> postet nyt i tråden. Men jeg vil gerne have bruger specifikke oplysninger
>> i mailen, dvs. at jeg er nød til at sende mails til alle deltagere
>> enkeltvis.
>>
>> 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?

/H



Johan Holst Nielsen (24-02-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 24-02-08 19:25

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

Harald (24-02-2008)
Kommentar
Fra : Harald


Dato : 24-02-08 20:11

"Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse
news:47c1b671$0$90274$14726298@news.sunsite.dk...
> 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.

Jeg har egen server hvor jeg har sat SMTP i php.ini op til at benytte min
ISP´s SMTP server.

Mht. for($i=0;$i<50;$i++) , det tog næsten 5 minutter hvor Firefox stod og
ventede på siden. Men jeg skal så bare finde ud af at få php sat op til at
benytte min egen SMTP server så burde det jo gå hurtig. Min server er sat op
til at kræve godkendelse og det står der ikke noget om i php.ini og jeg
syntes heller ikke jeg kan google mig frem til noget?

/H



Johan Holst Nielsen (24-02-2008)
Kommentar
Fra : Johan Holst Nielsen


Dato : 24-02-08 20:26

Harald wrote:
> Jeg har egen server hvor jeg har sat SMTP i php.ini op til at benytte min
> ISP´s SMTP server.
>
> Mht. for($i=0;$i<50;$i++) , det tog næsten 5 minutter hvor Firefox stod og
> ventede på siden. Men jeg skal så bare finde ud af at få php sat op til at
> benytte min egen SMTP server så burde det jo gå hurtig. Min server er sat op
> til at kræve godkendelse og det står der ikke noget om i php.ini og jeg
> syntes heller ikke jeg kan google mig frem til noget?

Se - så var mine antagelser forkerte....

I dit tilfælde ville jeg nok bygge en simpelt tabel med modtager osv. Du
indsætter blot data i denne tabel når der postes indlæg.

Hver 5 minut kører du et cronjob hvor der udsendes mail.

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Harald (24-02-2008)
Kommentar
Fra : Harald


Dato : 24-02-08 21:55

"Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse
news:47c1c4da$0$90272$14726298@news.sunsite.dk...
> Harald wrote:
>> Jeg har egen server hvor jeg har sat SMTP i php.ini op til at benytte min
>> ISP´s SMTP server.
>>
>> Mht. for($i=0;$i<50;$i++) , det tog næsten 5 minutter hvor Firefox stod
>> og ventede på siden. Men jeg skal så bare finde ud af at få php sat op
>> til at benytte min egen SMTP server så burde det jo gå hurtig. Min server
>> er sat op til at kræve godkendelse og det står der ikke noget om i
>> php.ini og jeg syntes heller ikke jeg kan google mig frem til noget?
>
> Se - så var mine antagelser forkerte....
>
> I dit tilfælde ville jeg nok bygge en simpelt tabel med modtager osv. Du
> indsætter blot data i denne tabel når der postes indlæg.
>
> Hver 5 minut kører du et cronjob hvor der udsendes mail.

Det vil jeg arbejde på. Jeg takker.

/H



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste