假设我有一个页面随着时间的推移缓慢地返回一堆数据.比如,这个例如:
<?php
$iTime = time();
while(time()-$iTime < 10 ) {
echo "Hello world";
echo str_repeat( ' ', 1024 ) . "<br />";
flush( );
sleep(3);
}
?>
Run Code Online (Sandbox Code Playgroud)
我希望显示所有数据.所以它会更新"直播".就像在,一旦发送了一行数据,它将允许我解析数据并显示它?
有没有办法通过jquery做到这一点?如果以前曾经问过我,我道歉
谢谢你的时间!:)
当然,构建一个基本的彗星式长轮询非常简单:
PHP:
<?php
$data = null;
while ($data == null)
{
$data = find_data($_REQUEST['last_update']); // This is up to you.
// Although you may do a DB query, that sort of breaks the model
// from a scalability perspective. The point in this kind of
// operation is to rely on external data to know that it needs to
// update users, so although you can keep your data in a DB, you'll
// want a secondary storage mechanism to keep from polling it.
//
// Conceptually, you'd put new information into this data storage
// system when something changes (like new data from an external
// source. The data storage system could check to see if a file
// has been updated or if there is new data in something like a
// memcached key. You'd then consume the data or otherwise
// mark it as used.
sleep(5);
}
echo json_encode($data);
Run Code Online (Sandbox Code Playgroud)
JavaScript:
function setListener()
{
$.ajax({
url: 'updater.php',
dataType: 'json',
success: function(data, status, xhr)
{
// do something, such as write out the data somewhere.
setListener();
},
error: function()
{
setTimeout(setListener,10000);
}
});
}
Run Code Online (Sandbox Code Playgroud)