[PHP | MySQL] Nieuwsbrief mailen zonder time out

Pagina: 1
Acties:
  • 148 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben momenteel bezig met het maken van een nieuwsbriefsysteem. Ik heb tot nu toe al een CMS gemaakt waarmee de nieuwsbrief gemaakt kan worden (wordt weggeschreven als HTML). Hij wordt verstuurd als html. Maar ik zit met het volgende:

Er komen zo'n 10.000 mailadressen in de database, en ik ben bang dat als ik iets in de volgende trend gebruik om mails te versturen ik een time-out krijg:
code:
1
2
3
4
$sql = mysql_query("SELECT email FROM emaildatabase");
while ($record = mysql_fetch_assoc($sql )) {
      mail($record['emaill'], "Test bericht);
}

Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
De mail kun je het beste serverside versuren met een PHP file in deamon mode of een cron job. Met de website interface zet je dan al je messages in een queue, de server gaat die dan 1 voor 1 verzenden.

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 21:43

crisp

Devver

Pixelated

set_time_limit(0) en uiteraard vanaf de command-line uitvoeren en niet vanuit een browser.

Verder zou ik eens gaan kijken naar een goede mailer-class, liefst eentje die direct met SMTP kan babbelen. Verder uiteraard groeperen op domein en je zou nog kunnen overwegen om meerdere adressen tegelijk in BCC op te nemen (maar ook niet te veel).

Wees erg secuur met dit soort zaken, voor je het weet beland het meerendeel van je mailing in spam-folders. Zorg ook voor een makkelijke, duidelijke en werkende uitschrijf-methode.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 09-09 15:24
Dat zit er inderdaad dik in.
Het lijkt me verstandiger om dit met een (php) cronjob te doen. Je hebt dan geen last van timeouts, en je hoeft ook geen browser open te laten staan (met alle risico's van dien).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
OK, het is dus verstandig om een crontab taak te doen. Volgens mij kan deze ook via een omweg php uitvoeren.

Acties:
  • 0 Henk 'm!

  • AW_Bos
  • Registratie: April 2002
  • Laatst online: 14:56

AW_Bos

Liefhebber van nostalgie... 🕰️

Verwijderd schreef op dinsdag 20 maart 2007 @ 23:50:
OK, het is dus verstandig om een crontab taak te doen. Volgens mij kan deze ook via een omweg php uitvoeren.
Correct..
2 00 * * * /usr/sbin/php/ nieuwsbrief_mailing.php
zou dan als het goed is om 2 uur elke nacht moeten mailen. het pad van PHP moet je even controleren, anders voldoet php ook vaak.

Telecommunicatie van vroeger
🚅Alles over spoor en treintjes


Acties:
  • 0 Henk 'm!

  • Fatamorgana
  • Registratie: Augustus 2001
  • Laatst online: 21-07 01:24

Fatamorgana

Fietsen is gezond.

Ik heb zoiets wel eens zo opgelost:

code:
1
2
ignore_user_abort();
set_time_limit(0);

Dan start je het script via de browser, kun je even meekijken naar de output (als deze er is) en als je daar genoeg van hebt sluit je de browser en gaat het script gewoon door.

Het zal wel niet zo heel erg netjes zijn zo, maar het werkte bij mij perfect.

Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Fatamorgana schreef op woensdag 21 maart 2007 @ 00:06:
Ik heb zoiets wel eens zo opgelost:

code:
1
2
ignore_user_abort();
set_time_limit(0);

Dan start je het script via de browser, kun je even meekijken naar de output (als deze er is) en als je daar genoeg van hebt sluit je de browser en gaat het script gewoon door.

Het zal wel niet zo heel erg netjes zijn zo, maar het werkte bij mij perfect.
Totdat de gebruiker eens op refresh drukt omdat de pagina niet snel genoeg geladen wordt, dan krijg je humor...

Wat ik over het algemeen doe is een webinterface maken waarin mensen emailadressen aan een queue kunnen toevoegen. En dan in een cronjob om 2:00 de cronjob de mailing laten versturen aan de queue.
Dan kan je in je cronjob alles afhandelen ( versturen met batches van 100 / 1000 of met allemaal bcc's, afhankelijk van inetprovider + type email ) en iedereen kan alles toevoegen. Hoeveelheid maakt niet meer uit ( want 10.000 mails erdoorheen pompen is toch echt wel gebeurd voor 08:00 's ochtends als 90% van onze klanten de mail opent... )

Acties:
  • 0 Henk 'm!

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Mocht je niet de mogelijkheid hebben om de CLI php te gebruiken, je kunt ze ook per 100 (het veilige maximum) adressen direct aan je MTA geven. Dan hoef je er dus maar een stuk of tien te sturen.

[ Voor 5% gewijzigd door CyBeR op 21-03-2007 01:00 ]

All my posts are provided as-is. They come with NO WARRANTY at all.

Pagina: 1