【发布时间】:2009-12-19 23:27:11
【问题描述】:
我想知道是否有人可以展示或举例说明 facebook 如何检查其数据库中的新消息?它似乎会定期执行此操作,而无需加载页面。在 PHP/MySQL/Jquery 脚本中实现这一目标的最佳方法是什么?
我们总是感谢任何帮助! 干杯,莉亚
【问题讨论】:
标签: php jquery mysql ajax facebook
我想知道是否有人可以展示或举例说明 facebook 如何检查其数据库中的新消息?它似乎会定期执行此操作,而无需加载页面。在 PHP/MySQL/Jquery 脚本中实现这一目标的最佳方法是什么?
我们总是感谢任何帮助! 干杯,莉亚
【问题讨论】:
标签: php jquery mysql ajax facebook
你可以这样做:使用periodical updater
<span id="inbox-title"></span>
<script>
$.PeriodicalUpdater('/path/to/service', {
method: 'get', // method; get or post
minTimeout: 1000, // starting value for the timeout in milliseconds
maxTimeout: 8000, // maximum length of time between requests
}, function(data) {
$('#inbox-title').html('you have ' + data + 'new messages');
});
</script>
另一种选择是绑定 onmousemove 事件并在不发生时进行 ajax 调用
【讨论】:
onmousemove 真的不适合那些设计为定期、定时更新的东西。
实际上有一个“页面加载”,但它是一个隐藏的请求,不会重新加载显示的页面。查看 jQuery Ajax command documentation,了解有关完成此任务的最简单方法之一的更多详细信息(特别是因为您已经提到使用 jQuery)。
【讨论】:
看看使用 COMET 技术的反向 ajax,这是一个完美的用途。
它背后的想法是启动一个 ajax 请求并让它超时,可能是 60 秒,当它超时时,再次启动它,这里浏览器与服务器有一个(几乎)持久连接,如果(对于简单示例)为用户创建一条消息。服务器可以回复已发出的挂起 ajax 请求之一(在这种情况下由消息的接收者发出)。
在 xmlhttprequest 和服务器等待时不会传输任何数据,但关闭和重新打开连接可能会给您的服务器带来负担。
【讨论】: