Automatisch controleren of er verandering is in database
Gewijzigd op 06/05/2024 08:10:27 door Erwin Leemans
Kijk eens naar een AJAX refresh in JavaScript.
https://aiocollective.com/blog/ajax-auto-refresh-volume-ii/
Ik ga dit even verder bestuderen, het voorbeeld werkt zoals ik het wil dus nu nog enkel bekijken hoe ik dit in praktijk zet voor mezelf. Alvast bedankt.
Quote:
So here’s the deal. More than two years ago i wrote a post about auto refresh content after changes in database – AJAX.
maar dat is enigszins misleidend. De verandering in de database triggert de refresh niet, ze zet gewoon een JavaScript interval op 20s
NOTIFY kan je een bericht sturen over een channel dat er iets is gewijzigd. Dat kan handmatig in een transactie of automatisch via een TRIGGER.
Op een centraal punt kan je alle wijzigingen in de database monitoren via LISTEN.
Vervolgens kan je het doorgeven aan je browser op verschillende manieren, via de Push API of via een WebSocket.
Voor meer informatie over pushen, zie SO.
N.B.: NOTIFY en LISTEN zijn PostgreSQL-extensies en werken niet in MySQL of MariaDB.
Er is wel een uitbreiding mysql-notification, die moet je dan even zelf compileren en installeren.
Via Op een centraal punt kan je alle wijzigingen in de database monitoren via LISTEN.
Vervolgens kan je het doorgeven aan je browser op verschillende manieren, via de Push API of via een WebSocket.
Voor meer informatie over pushen, zie SO.
N.B.: NOTIFY en LISTEN zijn PostgreSQL-extensies en werken niet in MySQL of MariaDB.
Er is wel een uitbreiding mysql-notification, die moet je dan even zelf compileren en installeren.
Ad Fundum op 09/05/2024 09:06:48:
Er is wel een uitbreiding mysql-notification, die moet je dan even zelf compileren en installeren.
Waarom een koe melken als je boter kunt kopen? ;-)
Je kunt gewoon het PHP-script waarmee je een nieuw verzoeknummer inschiet in de database gebruiken om na een geslaagde INSERT een push-notificatie te verzenden.
Of je laat het PHP-script een klein JSON-bestand bijwerken met de laatste 10 verzoeknummers. Dan kun je dat als simpele cache service met AJAX pollen.
Ward van der Put op 10/05/2024 09:28:45:
Waarom een koe melken als je boter kunt kopen? ;-)
Het hangt van je idee van databases af.
Als je er van uitgaat dat een database een uitgebreide bestandenbak is die ondergeschikt is aan PHP, dan is je voorstel niet gek.
Als je wilt dat de data die je ophaalt ook absoluut klopt, moet je zorgen dat de database de baas is van de data, zodat die garanties kan geven over de data. (Een beetje NoSQL vs. SQL dit)
Bijvoorbeeld wanneer er mutaties kunnen zijn vanuit andere kanten dan alleen PHP, zoals via psql of een andere clients.
Wanneer je gekozen hebt voor slechts een enkel invoerpunt met extra werk in PHP dan werkt het niet altijd. Terwijl de code in feite overbodig is omdat die functies al in je database zitten.
Waarom weer opnieuw het wiel uitvinden?