Ik zit weer met een nieuw probleem...
Ik heb een (webshop)systeem gemaakt waarbij leden bestellingen kunnen posten.
- Men krijgt tijdens het plaatsen (net voor de betaling) een bevestigingsmail waarin staat dat de bestelling is opgeslagen in de database. (De bestelling heeft op dit moment de status 'in behandeling')
- Vervolgens dient men via Paypal of iDeal de betaling af te ronden en wordt men terug naar de website gestuurd.
Het kan nu dus zijn dat een klant een bestelling plaatst maar (met opzet of per ongeluk) nooit zal betalen. Het lijkt mij daarom ideaal om periodiek de database door te lopen op bestellingen die niets anders doen dan stof vangen (bij wijze van spreken) en om deze uit het systeem te gooien.
Voor het bewerken van de database (en het eventueel versturen van een notificatie email) heb ik geen hulp nodig, ik vroeg mij alleen af of het mogelijk is om dit proces puur automatisch te laten lopen.
Ik heb gelezen dat cronjob periodiek scripts kan uitvoeren, maar aangezien ik hier nog nooit mee heb gewerkt wil ik eerst naar mijn mogelijkheden binnen de PHP omgeving zoeken. Daarbij maak ik geen gebruik van cPanel, dus ik hoop dat er ook een open-source oplossing voor dit probleem is.
In het kort ziet het scenario er dus zo uit:
1. Klant plaatst bestelling [database wordt geüpdate met een bestelling]
2. Klant 'vergeet' te betalen.
(2 weken gaan voorbij)
3. Script loopt automatisch na welke bestellingen ouder of even oud als 2 weken zijn en verwijderd deze.
Optioneel ben ik van plan om de webadmin en de klant een mail te sturen na 1 week om ze nogmaals op de hoogte te stellen van de onbetaalde bestelling.
====
Mijn deskresearch:
Ik ben ervan op de hoogte hoe ik moet 'rekenen met datums', maar ik weet niet of ik een functie kan maken waarbij ik zeg:
<?
///in UNIX
$nu = time ();
$deadline = strtotime ("+7 weeks", $nu);
// Dit zou ik automatisch op de deadline willen laten lopen.
/* Alternatief zou ik een maandelijkse check kunnen houden
om de database op te schonen. Maar dan wel automatisch
zodat er geen administrator hoeft te zijn om deze check
zelf uit te voeren. */
if($record['datum_geplaatst'] >= $deadline)
{
// Delete record uit SQL database
}
?>
Weer iemand hoe ik een dergelijke functie zonder (directe) interactie van de gebruiker kan laten lopen?
Of moet dit met cronjob? Zo ja, heeft iemand een bron voor mij waarmee ik kan leren hoe cronjob werkt (zonder cPanel, als dat bestaat)? http://www.cronjob.nl/ ken ik (dit gaat over cPanel, voor de rest: tl;dr), maar het liefst heb ik een bron met voorbeelden of oefeningen.
================
EDIT: tl;dr was een domme keuze. Ik zie dat DirectAdmin ook wordt behandeld. Ik weet niet of alle web panelen cronjob wizards hebben, maar als dat wel zo is dan is dit appeltje eitje!