Salve, ho questo script che praticamente ogni tot secondi, 30 per ora, richiama un file sul server.
Vorrei fare in modo che:
1- lo script generi il minor numero di richieste possibili al server, a me basta che richiami il file ogni 30 sec.
2- fare in modo che tipo dopo 1 ora si autodisabiliti e non aggiorni più la pagina.
3- se il file sul server non cambia nell'arco di 5 min, lo script si disabilita.
Codice PHP:
<script type="text/javascript">
<!--
var timeout;
function callReadFile(file_name) {
readFileDoFunction(file_name, "GET",
function() {
if(request.readyState == 4) {
if(request.status == 200) {
var last_modified = request.getResponseHeader("Last-Modified");
var last_modified_date = new Date(last_modified);
displayResults(request.responseText, file_name, last_modified_date.getDate());
}
}
}
);
}
function readFileDoFunction(file_name, read_type, the_function) {
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
var the_url = "http://www.server.com/time/read_file.php?fileName=" + file_name + "&t=" + new Date().getTime();
var the_results;
if(request) {
request.open(read_type, the_url);
request.onreadystatechange = the_function;
request.send(null);
} else {
alert("Devi aggiornare il browser prima di vedere il risultato della funzione AJAX ");
}
}
function displayResults(the_results, file_name, last_modified) {
document.getElementById("content").innerHTML = the_results;
timeout = setTimeout("callUpdateIfChanged("+last_modified+",'"+file_name+"')",30000);
}
function callUpdateIfChanged(current_last_modified, file_name) {
readFileDoFunction(file_name, "HEAD",
function() {
if(request.readyState == 4) {
if(request.status == 200) {
var last_modified = request.getResponseHeader("Last-Modified");
var last_modified_date = new Date(last_modified).getTime();
if(last_modified_date != current_last_modified) {
callReadFile(file_name);
}
timeout = setTimeout("callUpdateIfChanged("+last_modified_date+",'"+file_name+"')",30000);
}
}
}
);
}
function stopTimer() {
clearTimeout(timeout);
}
function updateClock () {
var currentTime = new Date();
var currentHours = currentTime.getHours();
var currentMinutes = currentTime.getMinutes();
var currentSeconds = currentTime.getSeconds();
var msec = currentTime.getMilliseconds();
currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
currentSeconds = ( currentSeconds < 10 ? "0" : "" ) + currentSeconds;
var currentTimeString = currentHours + ":" + currentMinutes + ":" + currentSeconds;
var currentChrono = currentHours + ":" + currentMinutes + ":" + currentSeconds;
document.getElementById("chronotime").firstChild.nodeValue = currentChrono;
}
//-->
</script>
</head>
<body onload="setInterval('updateClock()', 10 );callReadFile('http://www.server.com/file.txt');">
Grazie 1000
ciao
neorf