当然,建立一个基本的彗星风格的长轮询非常简单:
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_enpre($data);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);} }); }


