以前每次连接完数据库都进行关闭操作最近看手册发现使用mysql_connect的临时连接,手册上说的不需要手动关闭,此连接在PHP执行完毕后将自动关闭!后面又在数据库里面使用show processlist发现一只都只有一条,所以确定数据库会自动关闭连接无意中看PW数据库连接类,发现一个关闭数据库的函数mysql_close($linkid),$linkid我个人理解为在数据库执行show processlist后查询出来的Id值。所以我再进行了测试
----------首先我连接数据库,并且读取一些数据,并执行show processlist获得ID在最后使用mysql_close($linkid)发现报错,没有发现这个可以关闭的连接!说明PHP已经自动在读取完数据后关闭了此连接!
小弟的疑惑是那么我们在什么时候使用mysql_close()呢?

解决方案 »

  1.   

    不知道,从来都是坐等php自动关闭。
      

  2.   

    你理解错了
    这与 show processlist获得ID 无关$linkid = mysql_connect();//连接并获取资源
    mysql_close($linkid);//关闭资源那么我们在什么时候使用mysql_close()呢?
    当你从数据库获取了数据后,还要对这些数据进行复杂运算加工时(肯定很耗时间)
    这时就应关闭数据库连接,以便其他人使用
      

  3.   

    最好还是手动关闭比较好些吧 我觉得最好就是查询完数据库就马上关闭 如:mysql_query之后 这是一种良好的习惯
      

  4.   

    mysql_query查询完,就调用mysql_close是个很好的习惯。PHP的手册上例子也是这么写的。
      

  5.   

    二楼的大哥我得再问一下数据库连接是在整个页面的所有PHP代码执行完毕后自动关闭么?还是在mysql_query后,或者是mysql_fetch_array后
      

  6.   

    数据库连接是在整个页面的所有PHP代码执行完毕后自动关闭么?
    答:在整个页面的所有PHP代码执行完毕后自动关闭
      

  7.   

    出问题了,我也是和楼主一样的。从来都不在程序里面写关闭数据库的。
    然后我有一个程序,访问量非常大,每秒进入1千人。然后数秒钟后就连接不上数据库,提示“数据库连接数太多”,然后我打开主机上面的mysql数据库,使用“show processlist”后,发现里面的连接的基础已经上百了,都是Sleep状态。都是我那个程序的连接进程。
    我现在也是和楼主一样迷糊的,就是该不该在程序里面写关闭数据库的代码,为什么。
    如果写,是写在哪个地方(整个程序执行完毕的最后那一句吗)。