2 weken na datum mailtje sturen
Ik wil graag 2 weken nadat een actie verlopen is een mailtje sturen naar de klant.
Het veld in de database heet datum_verlopen en is enkel een date field.
Kan ik dit in 1 query opvragen?
$q = 'SELECT * FROM acties WHERE vandaag = 2 weken na verloop_datum...';
Dan laat ik de cronjob elke dag om een bepaalde tijd dit checken....
Kan iemand mij helpen met de juiste query..?
Daarmee alleen ben je er niet: het is ook verstandig te registreren wie je hebt gemaild.
Wel dan zoals Ward zegt een extra veld toevoegen waarin bijvoorbeeld een 1 staat dat er gemaild is (of misschien nog beter: de datumtijd van het moment van mailen)
Elke dag kun je dan mailen aan "datum < 2 weken AND registratie is null"
Ward van der Put op 22/11/2016 15:46:25:
Dit selecteert alle acties ook ouder als 2 weken maar ik wil alleen de acties die precies 2 weken verlopen zijn en dit groeperen bij bedrijf id zodat ik per bedrijf 1 mailtje stuur.
Het bijhouden wie gemaild is lijkt me overbodig als ik elke dag om precies dezelfde tijd een cronjob laat lopen welke checkt of een actie precies 2 weken is verlopen.. moet gek lopen als de cronjob niet loopt, server draait al jaren stabiel.
Toevoeging op 23/11/2016 12:38:38:
Opgelost, now() vervangen voor CURDATE() en < vervangen voor =
paar opties:
er is een schijf net even vol.
PHP wordt zojuist geupdate door de admin en net in die 20 seconden dat daardoor PHP niet beschikbaar is, draait je script.
Er is een ddos aanval op de server
een ander proces legt net een lock op een van de tabellen in je database
je draait je script om 02:30 en wegens wintertijd>zomertijd was dat tijdstip er niet.
(of komt 2x voor op een dag)
Kortom, het is niet volledig ondenkbaar.
Maar voor jou zal bekend zijn of het een groot probleem is, als iemand ooit een keer die mails mist.
Anders is het ongeveer 1 minuut werk om de kolom extra aan te maken en om je query's aan te passen (een extra eis in de WHERE in de ene query en 1 extra query om die kolom te update).
Daarnaast heb je een "bewijs" op welk moment de mail verstuurd is.
Afhankelijk van de toepassing kan dat een discussie met de ontvanger helpen. (Waarom heb je mijn account verwijderd zonder enig bericht?)
Quote:
moet gek lopen als de cronjob niet loopt, server draait al jaren stabiel.
Mja, da's toch een beetje van het niveau "Ik draag nooit een autogordel want ik heb toch nooit een ongeluk". Zolang het goed gaat gaat het goed. Dit lijkt mij een cirkelredenering.
NB wat ook irritant is is wanneer je een melding meerdere keren ontvangt. Een cron zou ook best dubbel / meerdere keren uitgevoerd kunnen worden. Maar jij hebt uiteraard je cronscripts niet in de publieke webdirectory staan toch ;-).