没有。网页关闭,服务进程也会关。自然Myql也关闭。

解决方案 »

  1.   

    $mydb = new DB();$sql = "select * from table order by id desc"; //这个表只有50条记录
    $mydb->Connect();
    $res = $mydb->query($sql);while ( $myrow = mysql_fetch_array($res) {
    echo $myrow["id"]} 
    mysql_free_result($res);   //自己写相应的方法  //你应该检查多方面检查。$mydb->close();
      

  2.   

    如果这样写访问量大一些的话可能会挂掉(个人认为)
    每次new一个DB都应该会产生一个数据库连接
    个人认为如果所有用户共享一个数据库连接,
    或者不同类型的用户共享一个连接比较好(比如电影版的用户共享一个连接,电视版用户共享一个连接)刚学PHP不久,仅供参考,说错了可不要笑话我:)
      

  3.   

    用 ADODB 好了。没有必要每个人都自己写个 DB类
      

  4.   

    我个人觉得是APACHE 中 PHP内存设定的问题。你这么做,没有limit的情况下,在大数据量的情况下,PHP吃内存的情况非常严重。我测试过,在PHP内存为8MB,对300个记录进行各种判断,存入数组等等各种操作的情况下就已经是非常严重了。
      

  5.   

    严重关注这个问题!请教各位几个上面解答中的疑惑:1、mysql_free_result这个方法有必要么?(程序在毫秒计的时间内运行完毕后马上就自动释放了吧)2、共享mysql连接,这个怎样实现?怎样让b用户使用a用户开启的长连接?3、我想这个和类本身没有关系。但是区区几十条记录,怎么会导致服务器的mysql频繁当?而不是apache?4、有些时候要选择数据表的总记录数,必须进行无limit的简单查询,这样吃内存严重?怎么办?5、存入数组和300个记录判断造成严重吃内存是指往哪里?
      

  6.   

    我以前也发现pear DB函数经常把mysql挂了
    后来我重新写过DB类才行。
    mysql释放不了资源
    至今不懂是什么问题造成的
      

  7.   

    不会啊。网页关闭,连接也关闭。长连接就不知道了。但不可能在php平台层面上实现a用户资源给b用户。除非你在自己的程序里建立对应的缓冲机制(也就是应用层)
    查询总记录数,可以 select 其中一个小的字段吧?不必要 *
    300个记录应该不算什么吧。看你的数据是怎样了。和存的方法。
      

  8.   

    我是在国外申请的空间和服务器,网站经常突然down掉(就是数据库的问题,因为访问静态网页可以), 联系了管理员,他们让我检查我的程序是否在结尾没有关闭数据库,我检查了,开始确实这样,后来关闭了,但是偶尔还会发生, 后来他们说页可能是其他客户的问题,因为我们都是共享的mysql,如果他们的程序有问题,我的也会牵连进去....55555.
      

  9.   

    select *要比select id快。mysql优化上是这么写的。
      

  10.   

    从来没有用过 mysql_close,呵呵。。“select *要比select id快。”
    单单指在mysql数据库中查询速度,并不代表整体速度。呵呵,还有其他因素的,如果web与数据库不在一台机器上,网络速度影响也很大,尤其*里面有很多东东的时候,呵呵。再说,消耗资源也不小,还是全程的消耗。呵呵
    另外,lz,现在有很多现成的数据库操作类,拿来看看就知道很多问题:)
      

  11.   

    mysql_free_result mysql_close()都必须有....
    得到记录集马上断开连接...我的DB类...共享一下..写得不算好,但从来没有挂过服务器
      

  12.   

    class Database
    {
        var $server    = "";
        var $database  = "";
        var $user    = "";
        var $password  = "";
        var $msgflag   = "";
        var $link      = "";
        var $error     = "<center><h1>The database connection error</h1></center>"; function Database(){
        }
        
    function getConnectionToDBX1(){
    $this->link=@mysql_connect("192.168.0.1","admin","admin")
    or die($this->error);
    @mysql_select_db("door_server",$this->link);
    @mysql_query("set autocommit=0");
    }
        /*
        *
        * method   : release()
        * description : 释放数据库的连接
        * parameter   : 已连接的数据库标识
        * return   : 成功返回true;失败返回false;
        *
        */    function release(){
    @$this->execute("commit");
    return mysql_close($this->link);
        }
        /*
        *
        * method   : select($sql)
        * description : 取得记录集
        * parameter   : sql查询语句,数据库连接标识
        * return   : 返回类型:array 
        *               array中的每一个元素为mysql_fetch_object()得到的对象
        *
        */    function select($sql){  $i=0;
    $array_result="";
    //mysql_unbuffered_query 
        $db_result=mysql_unbuffered_query($sql,$this->link);
         if($db_result){
    while($row=mysql_fetch_object($db_result)){
    $array_result[$i] = $row;
    $i++;
    }
    mysql_free_result($db_result);

         }else{
    echo "<!--出错了:" . $sql."-->";
    return false; 
         }
    $this->manage_log($sql);
    return $array_result;
        }
        
        
        /*
        *
        * method   : execute($sql)
        * description : 更新记录
        * parameter   : sql更新语句,数据库连接标识
        * return   : 返回类型:boolean 
        *
        */    function execute($sql){
    //$sql = str_replace("\\","\\\\",$sql);
         $result=mysql_query($sql,$this->link);
         if(!$result){
         echo "<!--出错了:" . $sql."-->";
         return false;
         }else{
    $this->manage_log($sql);
         return true;
    }
        }
       }
    太长了,只贴到这里
      

  13.   

    mysql_unbuffered_query
    (PHP 4 >= 4.0.6)mysql_unbuffered_query --  向 MySQL 发送一条 SQL 查询,并不获取和缓存结果的行 
    说明
    resource mysql_unbuffered_query ( string query [, resource link_identifier])
    mysql_unbuffered_query() 向 MySQL 发送一条 SQL 查询 query,但不像 mysql_query() 那样自动获取并缓存结果集。一方面,这在处理很大的结果集时会节省可观的内存。另一方面,可以在获取第一行后立即对结果集进行操作,而不用等到整个 SQL 语句都执行完毕。当使用多个数据库连接时,必须指定可选参数 link_identifier。 注: mysql_unbuffered_query() 的好处是有代价的:在 mysql_unbuffered_query() 返回的结果集之上不能使用 mysql_num_rows() 和 mysql_data_seek()。此外在向 MySQL 发送一条新的 SQL 查询之前,必须提取掉所有未缓存的 SQL 查询所产生的结果行。 参见 mysql_query()。