[PHP/MySql] "Wachten" op record change or add

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Hallo :)

Wie kan mij een programmeer advies geven om het volgende.

Ik heb hier een web server met scripts in PHP die gebruik maken van MySql database. Deze database heeft een table met records. Deze records worden regelmatig aangepast door een extern proces (aanroepen van een php-script met data via http). De bezoeker van de website ziet de informatie op een nette manier verschijnen.

Omdat de gegevens in de database gemiddeld 2 a 3 keer per minuut worden gewijzigd, zoek ik een manier om de bezoeker van de site hier direct van op de hoogte te stellen, zonder de pagina te moeten verversen. En toen dacht ik dat ik dit wel kon doen met AJAX.

Een Javascript (Msxml2.DOMDocument object) roept een PHP script asynchroon aan. Maar dan moet er gewacht worden op een wijziging binnen een table. Maar elke keer een SELECT laten uitvoeren, eventueel met een sleep 1 seconde ertussen, lijkt mij niet efficient.

Zijn er andere technieken of oplossingen om dit efficienter te programmeren en met in de achterhoofd zo min mogeljk resources van de web server of client te gebruiken?

Acties:
  • 0 Henk 'm!

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

Je kan via ajax geen permanente verbinding met je server leggen. Je zult dus steeds moeten pollen en kijken of er wijzigingen zijn. Helaasch, maar so be it.

Raar... Is zo gek nog niet


Acties:
  • 0 Henk 'm!

  • pietervl
  • Registratie: Februari 2002
  • Laatst online: 20-09 20:54
Een hele simpele techniek die je kan gebruiken is door in een metatag een refresh mee te sturen waardoor de pagina na het ingestelde aantal seconden zal verversen. Oa Tweakers.net gebruikt dit op de frontpage:

code:
1
<META HTTP-EQUIV="refresh" CONTENT="300;URL=http://tweakers.net/">

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Je zult sowieso moeten pollen. Het is met php niet mogelijk om actief de verwerking van een ander lopen script aan te passen. Dit komt omdat elk php proces compleet los draait en er geen application scope is. Je zult dus sowieso een soort polling systeem moeten bouwen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Janoz schreef op vrijdag 30 juni 2006 @ 15:19:
Je zult sowieso moeten pollen. Het is met php niet mogelijk om actief de verwerking van een ander lopen script aan te passen. Dit komt omdat elk php proces compleet los draait en er geen application scope is. Je zult dus sowieso een soort polling systeem moeten bouwen.
Je kan via ajax geen permanente verbinding met je server leggen. Je zult dus steeds moeten pollen en kijken of er wijzigingen zijn. Helaasch, maar so be it.
Ja toch. Was ik al een beetje bang voor. Dan ga ik maar pollen.

code:
1
<META HTTP-EQUIV="refresh" CONTENT="300;URL=http://tweakers.net/">


Dit ververst de hele pagina en is niet de bedoeling. :)