没有使用间隔的AJAX Shoutbox,可以这样做吗?

时间:2011-06-08 02:09:37

标签: php javascript intervals

好的,我正在寻找一种让shoutbox只有在任何人输入消息时触发的方法。

基本上,我们可以控制当有人提交喊叫时会发生什么,但我不想使用Javascript间隔(setTimeout()setInterval())函数来每隔x秒调用一次。因为每隔x秒就会到达数据库,试图判断是否已经发出了喊叫声。

必须有一个更好的方法来做到这一点,每隔x秒不会打到数据库,以便为每个人更新Shoutbox以查看喊叫。

这是我需要帮助的地方,因为我们的shoutbox在服务器上使用了太多资源,导致服务器有时过载。

我已经考虑了一个文件...例如,当一个shout已经发布到shoutbox时,服务器上的文件名会变为某个东西,这个文件名会被检查(而不是数据库),如果文件名是不同的,它应该加载喊叫。也许,它甚至可以将声音放在文件中而不是数据库中,并且只有在将另一个声音添加到shoutbox后才将其粘贴到数据库中。因此,最后一次喊叫将始终以文本格式保留在文件中。

这是处理服务器重载的更好方法吗?但即便如此,我仍需要调用间隔来确定文件名是否已更改。所以这仍然是一个间隔,但你认为这样在服务器上会更好吗?如果是这样,我应该使用什么名字?我应该使用php time()函数来命名文件吗?

是否有人可以推荐其他任何想法来解决这个问题。最好是一种不使用任何间隔来更新shoutbox的方法吗?

请帮助,谢谢你们:)

2 个答案:

答案 0 :(得分:0)

您可能希望查看HTML5的WebSockets,但对于不兼容的浏览器,我认为您会在一段时间内不断轮询服务器。

答案 1 :(得分:-1)

您对可能的解决方案的描述更接近于服务器推送而非页面获取。

我知道你可以使用带有Transfer-encoding: chunked的node.js来实现这种行为。请查看http://www.nodejs.org/上的视频,以获得更好的示例