LS,
Om lekker te experimenteren in een door mij gecontroleerde omgeving heb ik een VPS gehuurd en daar een LAMP-installatie op gezet met Debian Wheezy en PHP 5.5. Omdat het geen grote specs heeft wil ik er zo min mogelijk op draaien.
Voor het versturen van mail heb ik gekozen voor sSMTP, supersimpel en snel werkend gekregen via Ziggo's SMTP, werkt ook in PHP via mail(). Bij tests blijkt echter dat scripts heel traag worden als er ergens een mailtje wordt verstuurd.
Bij het uitvoeren van bovenstaand script duurt het ruim een seconde tot soms wel vier seconden, veel te lang om een bezoeker op te laten wachten in ieder geval. Na inspectie van /var/log/mail.log lijkt het te komen door het versturen zelf:
Google gaf me dit artikel nog maar die krijg ik niet aan de praat. De oplossing zou m.i. zijn dat PHP niet wacht op het afhandelen van mail() en gewoon doorgaat. Liefst door asynchroon te werken, maar met een "hack" mag wat mij betreft ook. Zelfs een ander simpel SMTP-programma is in principe een optie.
Na uren hobby-en kom ik er nog steeds niet uit, dus keer ik me naar jullie: hoe zouden jullie zo snel mogelijk een dergelijke oplossing inrichten?
Disclaimer: Linux-noob en autodidact.
Alvast heel erg bedankt voor de hulp!
Om lekker te experimenteren in een door mij gecontroleerde omgeving heb ik een VPS gehuurd en daar een LAMP-installatie op gezet met Debian Wheezy en PHP 5.5. Omdat het geen grote specs heeft wil ik er zo min mogelijk op draaien.
Voor het versturen van mail heb ik gekozen voor sSMTP, supersimpel en snel werkend gekregen via Ziggo's SMTP, werkt ook in PHP via mail(). Bij tests blijkt echter dat scripts heel traag worden als er ergens een mailtje wordt verstuurd.
PHP:
1
2
3
4
5
6
7
8
9
10
| $time_start = microtime(true); $success = mail( "johndoe@example.domain", "Testmail PHP", (new DateTime())->format("c"), "From: Testserver <janedoe@example.domain>"); echo "Mail verstuurd: ", ($success ? "ja" : "nee"), PHP_EOL; $time_end = microtime(true); $time = $time_end - $time_start; printf("Duur: %f seconden", $time); |
Bij het uitvoeren van bovenstaand script duurt het ruim een seconde tot soms wel vier seconden, veel te lang om een bezoeker op te laten wachten in ieder geval. Na inspectie van /var/log/mail.log lijkt het te komen door het versturen zelf:
Jul 17 20:31:34 primus sSMTP[21092]: Creating SSL connection to host Jul 17 20:31:34 primus sSMTP[21092]: SSL connection using RSA_AES_128_CBC_SHA1 Jul 17 20:31:35 primus sSMTP[21092]: Sent mail for janedoe@example.domain (221 smtp2.tb.mail.iss.as9143.net closing connection) uid=33 username=www-data outbytes=442
Google gaf me dit artikel nog maar die krijg ik niet aan de praat. De oplossing zou m.i. zijn dat PHP niet wacht op het afhandelen van mail() en gewoon doorgaat. Liefst door asynchroon te werken, maar met een "hack" mag wat mij betreft ook. Zelfs een ander simpel SMTP-programma is in principe een optie.
Na uren hobby-en kom ik er nog steeds niet uit, dus keer ik me naar jullie: hoe zouden jullie zo snel mogelijk een dergelijke oplossing inrichten?
Disclaimer: Linux-noob en autodidact.
Alvast heel erg bedankt voor de hulp!