draai een script elke minuut
ik ben op zoek naar een manier om een gedeelte van mijn php pagina elke minuut te verversen.
met een iframe werkt niet goed, omdat deze niet automatisch vernieuwd kunnen worden en de inhoud steeds veranderd.
de inhoud is een klein gedeelte die gegevens uit de database haalt en die weergeeft.
een stats van de site zeg maar, waarop de gasten en aangemelde leden te zien zijn.
ik wil niet dat de gehele pagina ververst word maar alleen een klein gedeelte van het php script telkens op nieuw gedraaid word zodat mensen kunenn zien wie er online zijn enz.
is het mogelijk om een loop of while e.d. in te stellen dat deze elke minuut 1x draaid ????
thanx in advance
ik heb al flink wat ge-googled en kwam cron-jobs tegen.
maar een cronjob is een script dat continue draaid en zorgt er (zo ver ik weet) niet voor dat de inhoud van de browser word ververst, am i right?
misschien kan je iets met AJAX
Erik schreef op 31.12.2006 01:07:
misschien kan je iets met AJAX
daar was ik inderdaad al naar aan het kijken...
maar het probleem is dat ik daar vrij wijnig van af weet
ik heb wel al wat dingen geprobeer met interval enz..
dit werkt wel maar probeel is dat deze functie niet goed functioneerd als ik er php door heen gooi
voorbeeld:
function stats() {
}
window.setInterval("stats()",5000);
dit werkt niet omdat de code al word geschreven voor dat de funtie geactiveerd word en met print of document.write krijg ik fouten in mijn javascript...
enig idee?
Bij AJAX is het de truc om in een bestaande pagina een request te doen naar een script (of iets anders op de webserver) en deze op dezelfde pagina weer te verwerken. Hierdoor kan je dus zonder pagina refesh nieuwe content toevoegen aan een pagina of mooier nog: bestaande content aanpassen.
Hierdoor zou je dus ook elke minuut een actie kunnen uitvoeren.
Elwin
Code (php)
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
36
37
38
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
36
37
38
<script language="JavaScript">
// Verander hier de tijd dat er refreshed moet worden ( in seconden )
var refreshinterval=60
// Wil je de refresh in je statusbalk zichtbaar ? ( yes of No )
var displaycountdown="No"
var starttime
var nowtime
var reloadseconds=0
var secondssinceloaded=0
function starttime() {
starttime=new Date()
starttime=starttime.getTime()
countdown()
}
function countdown() {
nowtime= new Date()
nowtime=nowtime.getTime()
secondssinceloaded=(nowtime-starttime)/1000
reloadseconds=Math.round(refreshinterval-secondssinceloaded)
if (refreshinterval>=secondssinceloaded) {
var timer=setTimeout("countdown()",1000)
if (displaycountdown=="yes") {
window.status="Page refreshing in "+reloadseconds+ " seconds"
}
}
else {
clearTimeout(timer)
window.location.reload(true)
}
}
window.onload=starttime
</script>
// Verander hier de tijd dat er refreshed moet worden ( in seconden )
var refreshinterval=60
// Wil je de refresh in je statusbalk zichtbaar ? ( yes of No )
var displaycountdown="No"
var starttime
var nowtime
var reloadseconds=0
var secondssinceloaded=0
function starttime() {
starttime=new Date()
starttime=starttime.getTime()
countdown()
}
function countdown() {
nowtime= new Date()
nowtime=nowtime.getTime()
secondssinceloaded=(nowtime-starttime)/1000
reloadseconds=Math.round(refreshinterval-secondssinceloaded)
if (refreshinterval>=secondssinceloaded) {
var timer=setTimeout("countdown()",1000)
if (displaycountdown=="yes") {
window.status="Page refreshing in "+reloadseconds+ " seconds"
}
}
else {
clearTimeout(timer)
window.location.reload(true)
}
}
window.onload=starttime
</script>
Bedoel je het zo?
Dit herlaad wel je hele pagina.
Gewijzigd op 01/01/1970 01:00:00 door Deze site laat je geen account deleten
@teuneboon:
een script om de hele pagina te herladen had ik al (dit hoeft niet eens met javascript maar kan ook gewoon met de meta tags ;) )
maar met javascript heb je ook een veel eenvoudigere manier om elke minuut te verversen ;) :
function herlaad(){windows.location.reload();}
btw met die window.setinterval("herlaad()",6000);
@elwin:
ik dacht eerlijk gezecht dat AJAX client-side scripting was (zoals java)
heb je enig idee hoe dat zal moeten met AJAX.
of heb je een site zoals deze voor AJAX want ik heb echt 0% kennis van AJAX :P
anyway.. thanks in advance u guys
elwim, bedankd.
heb het nu voor elkaar dat de status real-time is
(nouja bijna realtime :P elke 10 sec word hij geupdate)
script:
<script type="text/javascript">
function ajaxinclude() {
var page_request = false
if (window.XMLHttpRequest)
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
page_request.open('GET', 'status.php', false)
page_request.send(null)
writecontent(page_request)
}
function writecontent(page_request){
if (window.location.href.indexOf("http")==-1 || page_request.status==200)
div = document.getElementById('contentdiv');
div.innerHTML = page_request.responseText;
setInterval("ajaxinclude()",10000);
}
setInterval("ajaxinclude()",1000);
</script>
<div id="contentdiv">
moment geduld aub...
</div>
heb wat verschillende ajax elementen bij elkaar gevoegd en voilla !
in mijn pagina heb ik een div met id contentdiv zodat het script weet welke text geupdate moet worden.
deze laat ik via get element by ID vinden op id naam en vervolgens in een variable opslaan.
dan bij het laden van de pagina de functie aanroepen en onder aan de funtie een interval van 10 sec om vervolgens weer bovenaan de functie te beginnen.
hoop dat er iemand nog iets aan heeft hier..
edit:
er moet nog wat aangebeuren, want bij het opstarten van dit script word de processor behoorlijk wat aangeroepen, op de server tot nu to nog geen pieken kunnen vinden amaar het is ook nog niet druk geweest op de server.
Gewijzigd op 01/01/1970 01:00:00 door Earithramir