|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 269
|
[PHP/Javascript]XMLHttpRequest e flush()
buongiorno a tutti!
sto facendo qualche test sul mantenere aperto un canale con il server... e ci sto anche riuscendo, ma c'è un problema che non riesco proprio a capire il codice lato client (HTML e Javascript) è il seguente: Codice:
[...]
<body>
<div id="log" style="width: 450px; height: 200px; border: 1px solid black;"></div>
<br/><input type="text" value="default" id="parameter"/>
<input type="button" onclick="connServ();" value="richiedi pagina"/>
</body>
<script type="text/javascript">
var async = new XMLHttpRequest();
function connServ(){
param = "backend.php?pass=" + document.getElementById("parameter").value;
async.open("get", param, true);
async.setRequestHeader("connection", "close");
async.send(null);
}
async.onreadystatechange = function() {
if (async.readyState == 4){
if(async.status == 200){
respo = async.responseText;
updateDiv(respo);
}
else{
respo = "Richiesta fallita!<br/>";
updateDiv(respo);
}
}
}
function updateDiv(add){
document.getElementById("log").innerHTML += add;
}
</script>
[...]
Codice:
<?php
echo str_repeat(' ', 1024);
flush();
while(true){
set_time_limit(20);
echo 'OK - ' . $_GET['pass'] . ' at ' . date("h-i-s") . '<br/>';
flush();
sleep(3);
}
?>
l'output del server non compare, ma so che arriva sul client. se lo lascio in esecuzione un po', al momento in cui premo F5 per fare il refresh della pagina compare per una frazione di secondo (finché non fa il refresh vero e proprio) tutto l'output nel <div>. inoltre, includendo lo script direttamente in una pagina html (e non in una chiamata ajax) e richiamando il tutto con una cosa del tipo "backend.php?pass=test" il tutto funziona regolarmente, ogni 3 secondi stampa la mia stringa: Codice:
OK - test at 10-05-53 OK - test at 10-05-56 OK - test at 10-05-59
__________________
CPU: AMD Athlon X2 7750BE 3.15Ghz@vcore 1.3750 / NorthBridge: [email protected] RAM: Mushkin XP2 Radioactive 4GB 900Mhz@4-4-4-12-1T / HyperTransport: 2025Mhz VGA: Club3D Radeon HD4850 / HDD: Western Digital Caviar RE3 |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1400
|
permettimi, ma qual'è il tuo obiettivo?
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 269
|
imparare
per cosa? per esempio ogni volta che cicla potrebbe controllare su un DB se c'è qualcosa di nuovo e inviarlo al client col flush()... le possibilità sono molteplici. ora sto solo facendo un test
__________________
CPU: AMD Athlon X2 7750BE 3.15Ghz@vcore 1.3750 / NorthBridge: [email protected] RAM: Mushkin XP2 Radioactive 4GB 900Mhz@4-4-4-12-1T / HyperTransport: 2025Mhz VGA: Club3D Radeon HD4850 / HDD: Western Digital Caviar RE3 Ultima modifica di Jak696 : 11-11-2009 alle 12:32. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Feb 2008
Messaggi: 269
|
up
__________________
CPU: AMD Athlon X2 7750BE 3.15Ghz@vcore 1.3750 / NorthBridge: [email protected] RAM: Mushkin XP2 Radioactive 4GB 900Mhz@4-4-4-12-1T / HyperTransport: 2025Mhz VGA: Club3D Radeon HD4850 / HDD: Western Digital Caviar RE3 |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 16:52.




















