[php] Vraag community website en mails versturen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • isomis
  • Registratie: Mei 2005
  • Laatst online: 19-09 21:30
Ik zit met het volgende:

heb een community gebouwd en je kan bij profiel aangeven of je email wilt ontvangen als er buddy aanvraag is of als er een bericht is geplaatst op je profiel.

Op het moment dat er dan een bericht wordt geplaatst kan ik twee dingen doen:

- email direct via mail scriptje versturen naar desbetreffende gebruiker

of

- email opslaan in de database en om het uur laten legen door een mail script

Mijn vraag is wat is het beste? Het lijkt me als je zo 1000 leden hebt, oplossing twee beter is, aangezien je dan niet continue mailscripts loopt uit te voeren. Daarnaast kan je dat script op een andere server laten uitvoeren.

Tenslotte, dit lijkt mij een bekend probleem bij grote websites?. Is er een naamgeving voor? zeg maar voor de oplossing, dan kan ik het gewoon een voorbeeld vinden op Google.

bedankt!

Webontwikkelaar - Kitesurfer | Gamer


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:47

TeeDee

CQB 241

Hoe laat je, in het geval van optie 2, aan de gebruiker weten dat ern een buddy aanvraag of een bericht is? Lijkt me dat je dat ook per mail wil doen.

Tenzij je natuurlijk gebruikers een notificatie geeft als ze de volgende keer op de website zijn.

[ Voor 26% gewijzigd door TeeDee op 23-04-2008 14:45 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • !null
  • Registratie: Maart 2008
  • Laatst online: 20-09 20:32
Ik zou voor optie 1 gaan, zo verspreid je de server load. En het is makkelijker te implementeren.

Ampera-e (60kWh) -> (66kWh)


Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Het ligt eraan. Zolang je server geen load problemen heeft is het beter het direct te doen ipv een onnodige geforceerde vertraging.

Zodra je site zo druk is dat je taken gaat onderverdelen over verschillende servers, dan kun je bijvoorbeeld denken aan een losse mailserver die batchgewijs zijn mailqueue afhandelt ofzo.

In jouw geval iig niet van toepassing, dus gewoon lekker direct versturen.

Acties:
  • 0 Henk 'm!

  • isomis
  • Registratie: Mei 2005
  • Laatst online: 19-09 21:30
TeeDee schreef op woensdag 23 april 2008 @ 14:45:
Hoe laat je, in het geval van optie 2, aan de gebruiker weten dat ern een buddy aanvraag of een bericht is? Lijkt me dat je dat ook per mail wil doen.

Tenzij je natuurlijk gebruikers een notificatie geeft als ze de volgende keer op de website zijn.
Op het moment dat een gebruiker een buddy aanvraag doet op een profiel, wordt er gekeken of de gebruiker van dat profiel een email wilt ontvangen, indien dat het geval is wordt er een email gestuurd naar degene waarvan het profiel is. Hetzelfde verhaal als iemand een bericht plaatst, alleen andere content.

Je kan ook de content van de mail eerst opslaan in een tabel met zeg maar de volgende velden:

id
email
subject
content


Via een script op de server laat je dat tabel dan om het uur of 2 uur legen.

Webontwikkelaar - Kitesurfer | Gamer


Acties:
  • 0 Henk 'm!

  • isomis
  • Registratie: Mei 2005
  • Laatst online: 19-09 21:30
Bosmonster schreef op woensdag 23 april 2008 @ 14:51:
Het ligt eraan. Zolang je server geen load problemen heeft is het beter het direct te doen ipv een onnodige geforceerde vertraging.

Zodra je site zo druk is dat je taken gaat onderverdelen over verschillende servers, dan kun je bijvoorbeeld denken aan een losse mailserver die batchgewijs zijn mailqueue afhandelt ofzo.

In jouw geval iig niet van toepassing, dus gewoon lekker direct versturen.
Deze gedachten heb ik ook, alleen moet je dat niet van te voren voorkomen?, aangezien de kans groot is dat ik zo wel een aardig aantal bezoekers per dag krijg. De servers heb ik al :)

De vraag is eigenlijk bij hoeveel dataverkeer wil je dit gaan splitsen? Waar is grens? bij 100 mails of 1000?

[ Voor 7% gewijzigd door isomis op 23-04-2008 14:57 ]

Webontwikkelaar - Kitesurfer | Gamer


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:47

TeeDee

CQB 241

isomis schreef op woensdag 23 april 2008 @ 14:53:
[...]
Op het moment dat een gebruiker een buddy aanvraag doet op een profiel, wordt er gekeken of de gebruiker van dat profiel een email wilt ontvangen, indien dat het geval is wordt er een email gestuurd naar degene waarvan het profiel is. Hetzelfde verhaal als iemand een bericht plaatst, alleen andere content.

Je kan ook de content van de mail eerst opslaan in een tabel met zeg maar de volgende velden:

id
email
subject
content

Via een script op de server laat je dat tabel dan om het uur of 2 uur legen.
En de reden dat je het in een Tabel wil opslaan is?
* TeeDee ontgaat vooralsnog het nut van deze methode.
isomis schreef op woensdag 23 april 2008 @ 14:55:
[...]
De vraag is eigenlijk bij hoeveel dataverkeer wil je dit gaan splitsen? Waar is grens? bij 100 mails of 1000?
De grens van het aantal mailtjes zal je denk ik aan je Hostingpartij moeten vragen. Bij ons op de 'zaak' met een 2.3 Mbit lijntje pompen we een emailing van +/- 2500 mailtjes in < 3 minuten eruit. Tenminste, dan is het verwerkt. Dan moet het nog verzonden worden natuurlijk. Dit zijn HTML incl. Text only mailtjes.

[ Voor 26% gewijzigd door TeeDee op 23-04-2008 14:59 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • isomis
  • Registratie: Mei 2005
  • Laatst online: 19-09 21:30
TeeDee schreef op woensdag 23 april 2008 @ 14:57:
[...]

En de reden dat je het in een Tabel wil opslaan is?
* TeeDee ontgaat vooralsnog het nut van deze methode.
[...]

De grens van het aantal mailtjes zal je denk ik aan je Hostingpartij moeten vragen. Bij ons op de 'zaak' met een 2.3 Mbit lijntje pompen we een emailing van +/- 2500 mailtjes in < 3 minuten eruit. Tenminste, dan is het verwerkt. Dan moet het nog verzonden worden natuurlijk. Dit zijn HTML incl. Text only mailtjes.
Veel websites met 1000 bezoekers per dag doen het op deze manier om zo de server niet te belasten. Ik weet zeker dat tweakers het ook op zo'n gelijke manier doet, alleen de vraag is wanneer kies je voor het ene of het andere? waar is de grens.

Een tabel kan je door een aparte mailserver laten uitlezen, dan belast je het dataverkeer van de server waar de website opstaat niet.

[ Voor 8% gewijzigd door isomis op 23-04-2008 15:05 ]

Webontwikkelaar - Kitesurfer | Gamer


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 19:47

TeeDee

CQB 241

Je hebt toch al 'servers'? Dan kan je het nu in ieder geval opzetten zoals je in optie 1 voorstelde.

* TeeDee ziet nog steeds niet waarom je het in een db wil opslaan. De load zal imo te verwaarlozen zijn.

Desnoods laat je op filesystem nivo een mailtje genereren, plemp deze in je outgoing queue et voila!

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • isomis
  • Registratie: Mei 2005
  • Laatst online: 19-09 21:30
TeeDee schreef op woensdag 23 april 2008 @ 15:06:
Je hebt toch al 'servers'? Dan kan je het nu in ieder geval opzetten zoals je in optie 1 voorstelde.

* TeeDee ziet nog steeds niet waarom je het in een db wil opslaan. De load zal imo te verwaarlozen zijn.

Desnoods laat je op filesystem nivo een mailtje genereren, plemp deze in je outgoing queue et voila!
okey, het verschil is dat ik het nu al zo heb gemaakt dat het direct via mail script eruit gaat. Alleen zit nu te twijfelen of het niet zo mijn server overbelast al die buddy aanvragen en berichtjes op profielpagina''s :)

zo te zien maakt het niet zoveel uit als ik het goed begrijp, dan laat ik het voorlopig zo.

Webontwikkelaar - Kitesurfer | Gamer


Acties:
  • 0 Henk 'm!

Verwijderd

Zou het direct doen

Qua load merk je niets, en de mail is er direct
Als je optie 2 doet lijkt me onverstandig, behalve als je met een externe mailserver werkt zodat je je load niet beinvloed

Als er nl 1000 mails in 1x verstuurd moeten worden krijg je wss lekkere load, dus trage site en kans dat als je via PHP doet je scriptje over de zeik gaat (time out)

Acties:
  • 0 Henk 'm!

  • isomis
  • Registratie: Mei 2005
  • Laatst online: 19-09 21:30
Verwijderd schreef op woensdag 23 april 2008 @ 15:13:
Zou het direct doen

Qua load merk je niets, en de mail is er direct
Als je optie 2 doet lijkt me onverstandig, behalve als je met een externe mailserver werkt zodat je je load niet beinvloed

Als er nl 1000 mails in 1x verstuurd moeten worden krijg je wss lekkere load, dus trage site en kans dat als je via PHP doet je scriptje over de zeik gaat (time out)
ok bedankt! Was een beetje gaan twijfelen, daarnaast is de website nu nog lekker snel en dat wil ik graag zo houden. En ik hoop eigenlijk dat het een probleem gaat worden in de toekomst, want dat betekend dat ik veel bezoekers heb :)

Webontwikkelaar - Kitesurfer | Gamer


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Verwijderd schreef op woensdag 23 april 2008 @ 15:13:
Zou het direct doen

Qua load merk je niets, en de mail is er direct
Als je optie 2 doet lijkt me onverstandig, behalve als je met een externe mailserver werkt zodat je je load niet beinvloed

Als er nl 1000 mails in 1x verstuurd moeten worden krijg je wss lekkere load, dus trage site en kans dat als je via PHP doet je scriptje over de zeik gaat (time out)
*kuch*bullshit *kuch* ;)
Je gaat hierbij uit van een implementatie die alle mails in de queue gelijk gaat proberen te versturen. Je kunt best een configuratieparameter instellen die je mailverstuurderscript vertelt hoeveel mail hij per keer moet versturen en hoe lang hij vervolgens mag gaan slapen. Er zijn diverse methoden om je load te verdelen.

@TS: als ik jou was zou ik gewoon een aparte class o.i.d. maken die verantwoordelijk is voor het sturen van de e-mail. En of dat via een database queue verloopt of direct verzonden wordt middels een SMTP server of op het filesystem wordt aangemaakt, dat kan je dan door die class laten bepalen. En dan beginnen met optie 1, want dat kost je simpelweg minder moeite.
Ik kan mij voorstellen dat als er allerlei notifcation mails verstuurd gaan worden, reclame vanaf je community en weet ik veel wat, dat er piekmomenten gaan komen die je responsiviteit gaan beinvloeden. Als dat op gaat treden kun je alsnog voor optie 2 gaan.

Acties:
  • 0 Henk 'm!

  • isomis
  • Registratie: Mei 2005
  • Laatst online: 19-09 21:30
bigbeng schreef op woensdag 23 april 2008 @ 15:52:
[...]

*kuch*bullshit *kuch* ;)
Je gaat hierbij uit van een implementatie die alle mails in de queue gelijk gaat proberen te versturen. Je kunt best een configuratieparameter instellen die je mailverstuurderscript vertelt hoeveel mail hij per keer moet versturen en hoe lang hij vervolgens mag gaan slapen. Er zijn diverse methoden om je load te verdelen.

@TS: als ik jou was zou ik gewoon een aparte class o.i.d. maken die verantwoordelijk is voor het sturen van de e-mail. En of dat via een database queue verloopt of direct verzonden wordt middels een SMTP server of op het filesystem wordt aangemaakt, dat kan je dan door die class laten bepalen. En dan beginnen met optie 1, want dat kost je simpelweg minder moeite.
Ik kan mij voorstellen dat als er allerlei notifcation mails verstuurd gaan worden, reclame vanaf je community en weet ik veel wat, dat er piekmomenten gaan komen die je responsiviteit gaan beinvloeden. Als dat op gaat treden kun je alsnog voor optie 2 gaan.
Idd, in de toekomst ga ik zo class maken. Het is gelukkig mijn eigen idee en niet van een klant, dus er zal weinig spam rond gestuurd worden naar de gebruikers, want ik heb een hekel aan SPAM :*)

Webontwikkelaar - Kitesurfer | Gamer


Acties:
  • 0 Henk 'm!

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
@TS: als ik jou was zou ik gewoon een aparte class o.i.d. maken die verantwoordelijk is voor het sturen van de e-mail.
Joahhh ik zou ook een class maken! dat is de oplossing

1000 mailtjes per uur is echt niet boeiend ofzo. Als je ze mail()'t komen ze in de mailqueue en wordt het oeh "zware" verzenden daar verder verwerkt.
Pas op het moment dat je echt veel mailtjes gaat krijgen ga je dit misschien gaat merken aan je load, iets wat uiteraard gewoon vantevoren te testen valt. Op dat moment moet je andere dingen gaan verzinnen. Met deze hoeveelheid mail kan echter elke normaal geconfigureerde bak het goed af.

[ Voor 4% gewijzigd door flashin op 23-04-2008 16:53 ]


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Die aparte class maakt refactoren vanwege het optreden van problemen wel iets eenvoudiger. Door je probleem te encapsulen kun je dus eerst voor optie 1 kiezen en daarna indien nodig voor optie 2. Lijkt me een redelijk normale manier van programmeren.

Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 20-09 00:30
bigbeng schreef op woensdag 23 april 2008 @ 16:56:
Die aparte class maakt refactoren vanwege het optreden van problemen wel iets eenvoudiger. Door je probleem te encapsulen kun je dus eerst voor optie 1 kiezen en daarna indien nodig voor optie 2. Lijkt me een redelijk normale manier van programmeren.
Door er een aparte klasse van te maken kan je later inderdaad vrij eenvoudig die klasse vervangen door een klasse die op het moment dat je de send() methode aanroept gewoon een record in een database zet in plaats van meteen de mail te versturen :)

What do you mean I have no life? I am a gamer, I got millions!

Pagina: 1