Nieuwe order detecteren en muziekje afspelen
Ik heb een functie die de totale orders ophaalt.. lets say 10 orders momenteel.
Ik heb een page refresh van 5 seconden, dus iedere 5 seconden ververst de pagina.
Nu wil ik dus direct na refresh vergelijken of de waarde meer of minder is als voor de refresh maar hoe doen we dit het beste? Ik dacht iets met sessies maar kom nog niet uit de logica.
Furio Scripting op 11/07/2016 13:59:27:
Ik heb een page refresh van 5 seconden, dus iedere 5 seconden ververst de pagina.
Dat zou ik heroverwegen, want een volledige refresh per 5 seconde loopt nogal op:
• 12 per minuut;
• 720 per uur;
• 17.280 per dag;
• 120.960 per week;
• 44.150.400 per jaar.
On te beginnen zou ik niet de gehele pagina refreshen, maar alleen met Ajax de laatste 10 orders ophalen. Wijzigt daarin het hoogste ordernummer, dan heb je beet: *tingeling* een nieuwe order.
Ten tweede is dit typisch een situatie waarin een push veel beter is dan een pull. Bij een pull moet de client steeds controleren of er een nieuwe order is en schiet je daarom veel vaker mis dan raak. Bij een push heb je slechts één notificatie van server naar client nodig: hallo, er is een nieuwe order.
Is er een manier om bijvoorbeeld de huidige orders in een sessie te zetten en vervolgens direct na refresh opnieuw te kijken of deze hoger is als de sessie? Zo ja update sessie naar nieuwste en speel muziekje?
• http://www.opencart.com/index.php?route=extension/extension/info&extension_id=21523
• http://www.opencart.com/index.php?route=extension/extension/info&extension_id=23481
Je kunt inderdaad het hoogste ordernummer opslaan in de sessie en vervolgens op een later tijdstip controleren of dat ondertussen gewijzigd is.
Furio Scripting op 11/07/2016 14:34:26:
Ajax willen we inderdaad naartoe maar voor nu nog even via een simpele gehele refresh om de zoveel seconde/minuten.
Maar met een complete refresh is de te bewandelen weg veel lastiger: je weet niets meer van de toestand vooraf. Dat zul je dus op moeten slaan ($_SESSION ?)
Mat ajax heb je alles nog op je scherm staan, of in een javascript variabele. Daarmee kun je veel eenvoudiger controleren.
Je haalt bijvoorbeeld alleen het id op van de laatste order (2 bytes aan info) en je vergelijkt dat met de var in je geheugen van javascript, of met de inhoud van een willekeurige <input type=hidden>
Met een complete refresh kom je er ook wel, maar de weg is geheel anders. dus als je straks toch ajax wilt, waarom dan 2x iets compleet anders maken.
Ik heb het voor nu even via een sessie gedaan en werkt voor nu goed, vooral omdat ik weinig tot geen ervaring heb met Ajax maar hier zeker op korte termijn meer over wil leren gezien dit zich perfect leent voor realtime data. Bedankt voor de antwoorden!