Beste mensen,

Ik sta even voor een uitdaging...

Ik heb in mijn database een Mandje waar een bestelling in komt te staan. Hier staat ook een TimeStamp veld in.
Nu weet ik dat ik met een trigger een timer kan activeren om deze input na een uur te verwijderen.
Ik heb dit geprobeerd maar ik kom er niet uit hoe ik dit moet instellen.

Het gaat er dus om dat hij NIET het gehele Mandje leeg gooit, maar alleen diegene die na een uur niet afgehandeld zijn.

Wie wil en kan me hierbij helpen?

Groet,

Nanno
Ik blijf het toch bijzonder vinden dat er hier heel veel tijd wordt uitgetrokken om met elkaar in discussie te gaan maar als ik iets heel simpels vraag het verwijt krijg dat ik niet even iets zelf opzoek op Google.... pffff

Af en toe heb ik toch zo mijn bedenkingen over dit forum en het beleid erachter. Het heet toch echt PHP HULP en dan kan je ook de simpele vragen krijgen. Dan hoop ik ook op een normaal antwoord, hoe simpel het dan ook is.

Ik had eerlijk gezegd ook nooit gehoord van scheduled tasks in MySQL.
En ik denk dat velen met mij mee zullen gaan.

Als ik een site zou overnemen die hier gebruik had van gemaakt, en ik wou iets hier aan veranderen, dan had ik me echt denk ik een ongeluk gezocht, tot ik hier een topic erover zou gaan schrijven. :-P

Persoonlijk vind ik dat databases moeten doen wat ze moeten doen. Data opslaan en verwerken, en de integriteit bewaken.
Maar dat is ook weer iets waar de ontwikkelaar zorg voor moet dragen. De Taakplanner in Windows, of de cronjobs in Linux zijn in mijn ogen bedoeld voor geplande taken.



[size=xsmall]Toevoeging op 02/09/2022 19:17:42:[/size]

Nanno Koerts op 02/09/2022 19:11:47

Ik blijf het toch bijzonder vinden dat er hier heel veel tijd wordt uitgetrokken om met elkaar in discussie te gaan maar als ik iets heel simpels vraag het verwijt krijg dat ik niet even iets zelf opzoek op Google.... pffff

Nanno, het is daarom ook een discussieforum. Geen afhaalbalie voor kant-en-klare opdrachten.

Af en toe heb ik toch zo mijn bedenkingen over dit forum en het beleid erachter. Het heet toch echt PHP HULP en dan kan je ook de simpele vragen krijgen. Dan hoop ik ook op een normaal antwoord, hoe simpel het dan ook is.

Dit is algemeen op forums, en heeft niks met het beleid te maken. Sterker zelfs, we sturen alleen maar aan, en we sluiten niet zomaar topics. We zijn er gewoon erg soepel in. Maar we verwachten wel enige zelfredzaamheid wat laat zien dat je zelf ook motivatie hebt. Jij wil iets oplossen, en wij sturen je in de juiste richting.
@Ivo

Zal het nog even een keer uitleggen.
Het betreft een website waar je kaartjes kan bestellen voor een voorstelling.
Deze website draait al ruim 10 jaar alleen heb ik hem onlangs geheel vernieuwd en dit puntje lag eigenlijk al lange tijd op de plank om te doen. En daar was nu de tijd voor.
Elke nacht om 03:00 u gooit een cronjob alle bestelling in het mandje eruit. Ik had er nooit bij stil gestaan dat ik dit ook per uur in kan stellen bij mijn hosting. Ik was het gaan zoeken in MyAdmin en iets met trigger.
Inmiddels heb ik een nieuwe cronjob aangemaakt die inderdaad kijkt naar de tijden die ouder zijn dan het tijdstip NOW. En dit werkt prima zo te zien.
Waarom dat mensen een kaartje in het mandje doen en daarna weg gaan begrijp ik al jarenlang niet. Kennelijk willen ze daarna overleggen met anderen of... Zeg jij het maar, ik krijg er geen zicht op.
De cronjob die ik nu heb ingesteld werkt prima en precies zoals ik het graag wilde, ik zag alleen de mogelijkheid niet en dan is juist een forum zo fijn dat mensen met je meedenken.

[size=xsmall]Toevoeging op 02/09/2022 19:29:12:[/size]



Dit is algemeen op forums, en heeft niks met het beleid te maken. Sterker zelfs, we sturen alleen maar aan, en we sluiten niet zomaar topics. We zijn er gewoon erg soepel in. Maar we verwachten wel enige zelfredzaamheid wat laat zien dat je zelf ook motivatie hebt. Jij wil iets oplossen, en wij sturen je in de juiste richting.



Ik ben geen programmeur en toch heb ik een hele website draaien onder php. Dit komt omdat ik heeeeeeeeel veel gezocht heb en gevonden. En soms weet je even niet waar en hoe je iets moet zoeken. En voor de ene is dit zo logisch en voor de ander niet. En daar wringt het bij mij in de reacties af en toe.
Gewoon het feit dat ik vast zat in de gedachten om die trigger te gebruiken en dus totaal niet zou nadenken over een cronjob, dan is het fijn als er dan inderdaad iemand oppert hiervoor een cronjob in te stellen. Dat is dan iemand verder helpen. Ook als ik vraag wat het verschil is van iets.
Maar goed, ik zal nog wel weer eens langs komen met een 'simpele' vraag en dan hoop ik een goed antwoord te krijgen.

Bedankt in ieder geval voor de reacties.
Dat data in het mandje blijft kan diverse oorzaken hebben:
- De sessie van de gebruikers verdwijnt, en het mandje blijft gevuld
- Het IP-adres verandert opeens, maar in dat geval hoop ik dat je niet op IP's controleert.
- Gebruiker bedenkt zich om bepaalde redenen.

Aan de andere kant hoeft het echt geen probleem te zijn. Een dergelijke record neemt maar een paar bytes is.
Je zou het ook prima elke maand kunnen opschonen.
- Ariën - op 02/09/2022 19:57:28

Dat data in het mandje blijft kan diverse oorzaken hebben:
- De sessie van de gebruikers verdwijnt, en het mandje blijft gevuld
- Het IP-adres verandert opeens, maar in dat geval hoop ik dat je niet op IP's controleert.

Aan de andere kant hoeft het echt geen probleem te zijn. Een dergelijke record neemt maar een paar bytes is.
Je zou het ook prima elke maand kunnen opschonen.


Ik check op de sessie id en op het ip adres. Nooit geweten dat het ip ineens kan veranderen. Ik weet ook niet hoe lang de sessie id gehandhaafd blijft, wat ik wel weet dat deze wordt opgeheven bij het sluiten van de browser. Ik heb eerlijk gezegd ook niet veel kaas gegeten over het sessie gebeuren. 99% van de bestellingen gaat echt vlekkeloos en na afronden bestelling heft het script ook alles in het mandje op.

Ik wil het juist graag elk uur omdat we maar max 57 kaartjes kunnen verkopen. En dan wil je mensen de gelegenheid geven een kaartje te reserveren als er kaarten beschikbaar zijn. En dat niet pas na 24 uur.
Elke bezoeker heeft nu dus een uur de tijd om de bestelling af te handelen, doen ze dit niet, dan worden de kaarten weer vrijgegeven.

Héj! Het Theaterpand in Gorinchem.
Volgens mij ben ik daar wel eens geweest voor een cabaretvoorstelling van Cindy Pieterse. :-)

Verder zou ik gewoon elke minuut een cronjob uitvoeren. Maar ik zie ook dat andere sites gewoon een maximale tijd van 20 minuten toestaan, en dat je daarna eruit wordt geknikkerd. Dat zal wel met polling werken. In het andere topic van vanavond wordt dit ook uitvoerig besproken. Ik denk dat dit ook goed van pas komt met wat jij zoekt.

Elke paar seconden pollen of er al betaald is. Dit lijkt me ook robuuster voor bij een massale kaartverkoop.

Leuk dat er al eens bent geweest, ik ben dus bouwer en beheerder van de website sinds 2008.
Onlangs geheel opnieuw geschreven en draait onder php 7.4. Ik krijg het niet voor elkaar om het naar 8 te schrijven.
De oude website heeft 10 jaar onder versie 4 gedraaid.
Ik heb ook nog een conflict in het rekenen met wijzigen van de aantallen, hier kom ik ook niet uit. Ik zie de logica gewoon niet. Ik was in overweging om dat hier eens op het forum te gooien.
Versie 4, wow, dat is antiek... ;-)

Ik zou zeggen, maak een testlocatie aan op dezelfde PHP-versie en serversetup en zet display_errors aan en error_reporting op maximaal.
Nanno Koerts op 02/09/2022 19:11:47

Ik blijf het toch bijzonder vinden dat er hier heel veel tijd wordt uitgetrokken om met elkaar in discussie te gaan maar als ik iets heel simpels vraag het verwijt krijg dat ik niet even iets zelf opzoek op Google.... pffff

Af en toe heb ik toch zo mijn bedenkingen over dit forum en het beleid erachter. Het heet toch echt PHP HULP en dan kan je ook de simpele vragen krijgen. Dan hoop ik ook op een normaal antwoord, hoe simpel het dan ook is.



Ik merk dat er wat ontevredenheid bij je zit. Misschien is het dan even zinvol om uit te leggen dat dit gewoon een forum is waarop iedereen zich kan aanmelden. Alles gebeurt vrijwillig. Ik krijg dus niet betaald om jou te helpen. Ik doe dat in m'n eigen vrije tijd. Dat is niet erg, maar je kunt dus geen 'eisen' gaan stellen dat jouw vragen beantwoord 'moeten' worden. Het staat je natuurlijk altijd vrij om iets te vragen, maar in dit geval (het verschil tussen NOW en CURDATE) had je het antwoord heel makkelijk zelf even op Google kunnen zoeken. Dat scheelt jou tijd om de vraag hier te moeten stellen, en het scheelt mij tijd om de vraag te beantwoorden (ja, ik moet dat ook op Google opzoeken).

Het is dus niet vervelend bedoeld en het is niet zo dat we je niet willen helpen, maar we verwachten wel dat je eerst zelf even je best doet alvorens een vraag te stellen. Als je er vervolgens niet uitkomt dan staat het je uiteraard vrij om hier om advies te vragen.

Hopelijk heb je er nu een wat duidelijker beeld bij en begrijp je de opmerking die ik eerder maakte wat beter.

Nanno Koerts op 02/09/2022 20:06:19

Nooit geweten dat het ip ineens kan veranderen. [...] Ik heb eerlijk gezegd ook niet veel kaas gegeten over het sessie gebeuren.

Dan toch het schot voor open doel: hoog tijd om je in te lezen.
Voor sessie zie het Session Management Cheat Sheet, lees je ook in op het onderdeel netwerken met een tutorial.

Ik had eerder gesteld dat een cronjob bij voorkeur vermeden zou moeten worden in verband met schaalbaarheid. Maar hoe je het ook doet, je moet altijd uitkijken met het automatisch aanpassen van de database.
Je kent misschien wel die automatische regel ON UPDATE CURRENT_TIMESTAMP.
Als je geen overzicht (meer) hebt op een bepaalde database, kan een DBA bij gegevensonderhoud onbedoeld automatische triggers laten afgaan. De enige manier om dat voor te zijn is met goede communicatie. Het moet voor iedereen duidelijk zijn en blijven wanneer triggers af gaan en wat ze horen te doen.

Reageren