大家好,我刚刚接触Ajax不久,在做项目的过程中遇到了一个问题想跟大家讨论一下。假如现在有一个main.php界面,有一个数据库,main.php就是要显示数据库里面的各条记录,而数据库里面的记录是随时都有可能变化的,所以我想把main.php做成一个定时刷新的,这样就能实现实时更新了。
我现在写出来了这三个文件:main.php 、getRecords.php 、ajax.js 其中main.php就是负责显示的,getRecord.php的功能就是后台脚本文件,负责连接到数据库并且查找数据库,并将结果返回到main.php中进行显示,ajax.js文件大家肯定都知道是什么,就是构造XMLHttpRequest对象,向服务器发送GET请求(请求getRecords.php).
然后现在我有一个问题:连接数据库的代码是在getRecords.php里面写着,也就是说在请求getRecords.php后要有一个连接数据库的过程,在获得所需的数据后再把连接关掉(也在getRecords.php中实现)。这样,由于要定时刷新,也就是说要定时去请求getRecords.php文件,也就是说要定时去连接、关闭数据库。我设置的时间间隔是5秒,我觉得每5秒就要进行一次连接数据库,然后关掉,再连接,再关掉...这样肯定会对使服务器负载很大吧?
所以我就想能不能这样:在main.php被载入之后就连上数据库,然后这个连接一直保持着,这样每隔5秒钟去查询数据就不用再去连接数据库了,当main.php被关掉之后再关闭数据库的连接。不知道这样可以不,如果可以的话怎么实现?希望高手指点迷津啊!!
附上我的代码简化版:
ajax.js略
getRecords.php:
<?php
$link_id=@mysql_connect...   //连接数据库
@mysql_select_db("XXX",$link_id)...   //选择数据库
$b=mysql_query...                     //查询数据库
echo "..."                            //将查询结果返回给main.php
?>
main.php
<html>
<body onLoad=...>
...
<div id="showarea"></div>
</body>
</html>

解决方案 »

  1.   

    最好别用长连接,这里有说到一点点长连接,和ajax的选择。http://topic.csdn.net/u/20100624/13/d871142e-2c57-464a-bc29-2a5fd2f504c9.html5秒压力大不大看情况如果是个共享的结果,你把这个结果缓存了,5秒内用缓存,超过5秒,重新连接数据库读数据我的意思是说,如果用户群中,有一部分访问,获得的数据是一样的,就缓存起来除非每个用户,显示的数据都不一样,那样的话大概没必要缓存了当然,如果更新不是那么频繁,你可以把时间调大一点点