Bueno seguimos con esto, ahora haremos que haga recursivamente con retardos de tiempo, porque? Porque sino se bloquearia el navegador, el servidor o los 2 ;):
Código javascript
:
Ver originalvar xmlhttp = function()
{
var a;try{a = new XMLHttpRequest();}
catch(e){try{a = new ActiveXObject('Msxml2.XMLHTTP');}
catch(e){try{a = new ActiveXObject('Microsoft.XMLHTTP');}
catch(e){alert('Your browser doesn\'t support ajax');a=false;}
}}return a;
};
window.onload = function()
{
var a = new comet();
};
var comet = function()
{
var a = new xmlhttp();
a.open('post',window.location+"?"+Math.random()+"="+Math.random(), true);
a.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
a.onreadystatechange = function()
{
if(a.readyState == 4)
{
document.getElementById('content').innerHTML = a.responseText;
window.setTimeout(function(){
a = new comet();
},1000);
}
};
a.send('algo=algo');
};
Solamente con añadir un timeout ya conseguimos ese efecto, en este caso hemos puesto como parametro 1000 ya que el valor hay que ponerlo en milisegundos ;)
Ahora de la parte de PHP:
Código PHP:
<?php
if($_POST)
{
set_time_limit(0);
header("Edge-control: no-store");
sleep(1);
$content = trim(file_get_contents('content.txt'));
while($content=='')
{
sleep(1);
$content = trim(file_get_contents('content.txt'));
}
echo $content;
exit();
}
?>
con sleep conseguimos parar el tiempo en segundos antes de proseguir con la ejecución, también tenemos su equivalente en microsegundos que es el usleep, en nuestro caso:
Código PHP:
<?php
if($_POST)
{
set_time_limit(0);
header("Edge-control: no-store");
usleep(1000);
$content = trim(file_get_contents('content.txt'));
while($content=='')
{
usleep(1000);
$content = trim(file_get_contents('content.txt'));
}
echo $content;
exit();
}
?>