一个很好的例子就像facebook。有人评论另一个人之后,所有人都可以看到更新弹出不仅仅是你自己的页面而且不需要刷新..我正在制作一个监视或过滤掉错误评论的项目..所以如果插入了错误的评论数据库然后它给我通知并弹出数据..任何帮助请...谢谢我使用PHP的服务器端语言。
答案 0 :(得分:1)
是的,总会有办法。 你可以使用ajax和php来使用彗星编程和长轮询。
很好的缺点是使用彗星你的其他http请求将是Holt所以对于彗星你必须重写最好的会话。
根据您的问题,我建议您使用myisam引擎,因为它会在数据库上次修改时跟踪时间戳,以便您知道数据库何时更新。
示例彗星代码如下。
<强>的index.php 强>
<div id="content"></div>
<p id="form_container">
<form action="" method="get" onsubmit="comet.doRequest($('#word').val());$('#word').val('');return false;">
<input type="text" name="word" id="word" value="" />
<input type="submit" name="submit" value="Send" />
</form>
</p>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">
var Comet = function (data_url)
{
this.timestamp = 0;
this.url = data_url;
this.noerror = true;
this.connect = function()
{
var self = this;
$.ajax(
{
type : 'post',
url : this.url,
dataType : 'json',
data :
{
'timestamp' : self.timestamp
},
success : function(response)
{
self.timestamp = response.timestamp;
self.handleResponse(response);
self.noerror = true;
},
complete : function(response)
{
if (!self.noerror)
{
setTimeout(function(){ comet.connect(); }, 5000);
}
else
{
self.connect();
}
self.noerror = false;
}
});
}
this.disconnect = function() {}
this.handleResponse = function(response)
{
$('#content').append('<div>' + response.msg + '</div>');
}
this.doRequest = function(request) {
$.ajax(
{
type : 'post',
url : this.url,
data :
{
'msg' : request
}
});
}
}
var comet = new Comet('./backend.php');
comet.connect();
</script>
<强> backend.php 强>
function get_date()
{
$query = mysql_query("show table status from weefavr like 'request_responses'")or die(mysql_error());
$row = array();
while($result = mysql_fetch_assoc($query))
{
$row[] = $result;
}
return strtotime($row[0]['Update_time']);
}
$lastmodif = isset($_POST['timestamp']) ? $_POST['timestamp'] : 0;
$currentmodif = get_date();
while ($currentmodif <= $lastmodif)
{
usleep(10000);
clearstatcache();
$currentmodif = get_date();
}
$query_db = mysql_query("SELECT UNIX_TIMESTAMP(last_update.created) AS DATE,last_update.* FROM last_update WHERE UNIX_TIMESTAMP(last_update.created) BETWEEN '".$lastmodif."' AND '".$currentmodif."'")or die(mysql_error());
$row_db = array();
$response = array();
while($result_db = mysql_fetch_assoc($query_db))
{
$response['msg'][] = $result_db['title'];
}
$response['timestamp'] = $currentmodif;
$response['lastmodif'] = $lastmodif;
echo json_encode($response);
flush();
这个例子非常有用,但正如我告诉你的那样,你的其他HTTP请求将无效。 所以你需要做一些关于会话的黑客攻击。
是的Facebook,g mail,asana和zaarly是使用彗星编程的大巨头。
希望这会有所帮助。 随意问干杯......
答案 1 :(得分:0)
您需要从您的页面发出AJAX请求才能实现这一目标。
当用户执行操作时,您可以提交ajax请求并动态更新该用户的页面。其他人也会看到这一点。
答案 2 :(得分:0)
有一个很好的PHP / MySQL / AJAX教程和可供下载的here,可以帮助您入门。将此与您的服务器端过滤逻辑和定期的ajax回调相结合,以保持每个人的页面更新,您应该能够实现您的目标。
答案 3 :(得分:0)
这将是PHP和Ajax。 如果您需要它,基本introduction就在这里。 基本上你需要有一个网页,通过Javascript异步轮询你的后端(PHP页面)提供新内容。您可以使用Javascript计时器,甚至可以使用更复杂的设置,例如后端“推送”到您的页面。 我建议你查看另一个page作为例子。