Ik heb een soort agenda-script in PHP. Nou wil ik graag dat dit script een popupje laat zien op het moment dat de huidige tijd gelijk is aan een bepaald agenda punt.
Dit kan ik op 2 manieren oplossen:
1. In een verborgen framepje een php pagina om de minuut laten kijken in de database of er toevallig een agendapunt is dat <= aan de huidige tijd en zo ja, dat popupje tonen
2. bij het laden van de pagina alle agenda-punten (van die dag) in een javascriptje zetten en javascript het controleren verder af laten handelen.
Het grote voordeel van 2 boven 1 vind ik dat het realtime is en dat je niet telkens een pagina hoeft te refreshen.
(btw, voor een eventueel verschil in lokale tijd en servertijd wordt al gecompenseerd)
Dus, ik ben met js aan de slag gegaan en ben tot dit (test-)scriptje gekomen:
Echter, hier gaat m'n browser (mozilla) redelijk hard van over z'n nek. Hij geeft na een tijdje aan dat die javascript code er voor zorgt dat ie veel te langzaam draait (wat een understatement is, want hij staat gewoon compleet frozen) en vraagt of ik 'm wil afsluiten. De bottleneck zit 'm vrijwel zeker in die while-loop; ik heb alleen geen idee hoe ik dit anders op zou kunnen lossen. Kan iemand me een kickje in de goede richting geven?
Dit kan ik op 2 manieren oplossen:
1. In een verborgen framepje een php pagina om de minuut laten kijken in de database of er toevallig een agendapunt is dat <= aan de huidige tijd en zo ja, dat popupje tonen
2. bij het laden van de pagina alle agenda-punten (van die dag) in een javascriptje zetten en javascript het controleren verder af laten handelen.
Het grote voordeel van 2 boven 1 vind ik dat het realtime is en dat je niet telkens een pagina hoeft te refreshen.
(btw, voor een eventueel verschil in lokale tijd en servertijd wordt al gecompenseerd)
Dus, ik ben met js aan de slag gegaan en ben tot dit (test-)scriptje gekomen:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| <html> <head> <title></title> <script language="javascript" type="text/javascript"> var agendaPoints = []; agendaPoints[0] = 1073315800050; agendaPoints[1] = 1073316000050; agendaPoints[2] = 1073316500050; agendaPoints[3] = 1073317000050; function curTime() { var runTime = new Date(); var unixstamp = runTime.getTime(); return unixstamp; } function checkTime(arr) { for (var i in arr) { while (curTime() < arr[i]) { // we do nothing } alert ('curTime = '+curTime()+'\nAgendaPoint = '+arr[i]); } alert ('dat was het laatste agendapunt'); } </script> </head> <body onLoad="checkTime(agendaPoints);"> </body> </html> |
Echter, hier gaat m'n browser (mozilla) redelijk hard van over z'n nek. Hij geeft na een tijdje aan dat die javascript code er voor zorgt dat ie veel te langzaam draait (wat een understatement is, want hij staat gewoon compleet frozen) en vraagt of ik 'm wil afsluiten. De bottleneck zit 'm vrijwel zeker in die while-loop; ik heb alleen geen idee hoe ik dit anders op zou kunnen lossen. Kan iemand me een kickje in de goede richting geven?