我的网站上有2个侧边栏,由于网站的性质(游戏脚本/网站),这些部分需要经常刷新 - 每10秒钟左右。
在左侧边栏上有一个MAIL链接和一个ALERTS链接,如果你有新内容,这两个链接都会闪烁。
在右侧边栏,它有你的统计数据,健康状况等。
为了做到这一点,我把一些jquery事情搞得一团糟。例如,对于左侧边栏,我将此代码放在主页的head
标记中。
<script>
$(document).ready(function() {
$("#leftbar").load("leftbar.php");
var refreshId = setInterval(function() {
$("#leftbar").load('leftbar.php?randval='+ Math.random());
}, 9000);
$.ajaxSetup({ cache: false });
});
</script>
然后在侧边栏中我有一个<div id="leftbar"></div>
标签,每隔10秒刷新一次。我对右侧边栏也有同样的看法。
我的问题是,在我的leftbar.php中,它的设置就像普通页面一样。在顶部它连接到数据库,查询表,然后输出html取决于是否新的内容。然后再次关闭数据库连接。
这是怎么做到的? 每10秒钟打开和关闭数据库连接似乎太过分了。
注意:我对javascript / jquery一无所知
答案 0 :(得分:2)
对于某些ajax自动完成插件,每次击键都会进行数据库连接,这可能每秒发生几次。连接在mysql和大多数数据库中并不“昂贵”。我不得不承认,当我几年前从甲骨文发现时,我也感到很惊讶。
点是,ajax请求是一个完整的http请求,带有header和all。您可以为用户会话保持连接打开,但它的成本几乎与关闭和打开新会话的成本相当。并且一些杂散连接可以累积并污染数据库。
答案 1 :(得分:0)
这通常是如何完成的,尽管通常你不必每次都手动关闭连接。通常,当它完成请求数据时,它足够聪明地打开和关闭它自己。 See these docs for mysql_close
获取更多信息/更好的解释。
答案 2 :(得分:0)
在我看来,你应该阅读一些关于noSQL技术的文章:)
答案 3 :(得分:0)
嗯,你为jQuery / JavaScript介绍了很多东西! :)
看起来您的示例应该满足您的需求。数据库连接不应该担心,因为你可能使用Apache?在这种情况下,Apache可以处理的任何事情(每秒几千个请求)应该没问题。
您还可以查看push technology (long polling)以告知您何时有更新,而不是进行常规投票。当然,这会让阿帕克屈服。
因此,有一些很棒的库可以将这类工作卸载到nodejs和ape,这可以通过轮询和非常小的脚印进行some sophisticated things:)