This is how I recently implemented a solution using jQuery.
PHP increments a field in the database every time a significant update occurs.
<?php
// Call this function when data changes
function update_clients()
{
mysql_query( "UPDATE pageGen SET id = id + 1 LIMIT 1" );
}
// Call this function to get the ID to pass to JavaScript
function get_update()
{
$result = mysql_query( "SELECT id FROM pageGen LIMIT 1" );
$update = mysql_result( $result, 0, 'id' );
return $update;
}
?>
When the page is initially loaded, populate a JavaScript variable with a number from the database:
<script type="text/javascript">
var pageGenID = 25218603 // generated by PHP
var processUpdate = function( response )
{
if ( pageGenID < response )
{
replace_current_data_with_new_via_ajax();
pageGenID = response;
}
}
// Compare our Page Generate ID against that of the server
var checkUpdates = function()
{
serverPoll = setInterval( function()
{
$.get('script_to_return_latest_pageGenID.php',
{ lastupdate: 1 },
processUpdate, 'html');
}, 10000 )
};
// Check for updates every 10 seconds
$( document ).ready( checkUpdates );
</script>
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…