mysql_pconnect() acts very much like mysql_connect() with two major differences. First, when connecting, the function would first try to find a (persistent) link that's already open with the same host, username and password. If one is found, an identifier for it will be returned instead of opening a new connection. Second, the connection to the SQL server will not be closed when the execution of the script ends. Instead, the link will remain open for future use (mysql_close() will not close links established by mysql_pconnect()). 

解决方案 »

  1.   

    人少,就用pconn,人多,还是用conn理论是这样吧
      

  2.   

    可是我们公司一般都用mysql_connect() 
    永久连接很少用耶
      

  3.   

    人多,还是用conn这就是说如果人多的话,都去抢一个连接,会影响速度吧……
      

  4.   

    一般情况下都建议用mysql_pconnecct()如果有很多通过不同的用户名和密码联结mysql的话,可以考虑用mysql_connect。因为mysql_connect可以关闭楼上楼上的:
    说明你们公司的前辈可能不精通php
      

  5.   

    在PHP的source code中,你会发现php自身会有一个大的memory,它会把每次的
    mysql连接资源防到其中,如果你用pconnect,其实就是每次连接,它都会到这个
    连接池中去找有没有可用的连接,如果没有找到,它就新开一个,
    如果已经有人用过的可用连接,pconnect就不会再创建新连接了,而直接用这个可用的连接了.
    如果你用connect,则你必须自己负责创建和销毁连接了.
    其实综合看起来,如果大家都用pconnect,是一种比较好的形式.
      

  6.   

    楼上的!不是吧 好象我的教程中说connect是php文件执行完将要发送到浏览器的时候已经自己close的 不用再销毁了
      

  7.   

    mysql_connect: 脚本执行结束时,自动 close,而使用 mysql_close 是为了在脚本结束前提前 close, 所以一般用不着 mysql_closemysql_pconnect: 执行时首先寻找一个已经打开的连接,若存在就直接使用,否则才创建一个新的连接用 mysql_pconnect 较好,因为省略了很多重复的 close/connect 操作,速度可能更快。
    连接数与人多人少无关,当有 N 个人连接时,不论用 pconnect 还是 connect,最多都只有 N 个连接。
    只有在一种情形下,connect 优于 pconnect:你的脚本要执行很长时间 T1,其中只有开始的一小段时间 T2 需要用到数据库。这样,如果用 connect,而且用完后立即 close,则从总体上会减少数据库连接数。因为 pconnect 建立的连接,只有当脚本结束后才能标记为“空闲”,也只有标记为“空闲”的连接,才能被下一个脚本使用。如果同时运行的脚本数巨多,而且所有的脚本都一样,那么可以有一个近似公式:NC / NS = T2 / T1其中 NC 是总连接数,NS 是总脚本数。可见,时间比例被等效成了数量的比例。假如 T2 = T1 * 0.1,那么近似有NC = NS * 0.1效果明显!问题是:这种情况好像很少见。
      

  8.   

    呵呵,学习学习,我是用mysql_connect()
      

  9.   

    我一直用mysql_pconnect(),感觉不错啊
      

  10.   

    mysql_pconnect()挺好的,我一直用它^_*我参考书上的例子,自己做了个不太完整的数据库类,
    挺方便,我都快忘了怎么连数据库了:)
      

  11.   

    <?php
    class sql_db
    { var $db_connect_id;
    var $query_result;
    var $row = array();
    var $rowset = array();
    var $num_queries = 0; //
    // Constructor
    //
    function sql_db($sqlserver, $sqluser, $sqlpassword, $database, $persistency = true)
    { $this->persistency = $persistency;
    $this->user = $sqluser;
    $this->password = $sqlpassword;
    $this->server = $sqlserver;
    $this->dbname = $database; if($this->persistency)
    {
    $this->db_connect_id = @mysql_pconnect($this->server, $this->user, $this->password);
    }
    else
    {
    $this->db_connect_id = @mysql_connect($this->server, $this->user, $this->password);
    }
    if($this->db_connect_id)
    {
    if($database != "")
    {
    $this->dbname = $database;
    $dbselect = @mysql_select_db($this->dbname);
    if(!$dbselect)
    {
    @mysql_close($this->db_connect_id);
    $this->db_connect_id = $dbselect;
    }
    }
    return $this->db_connect_id;
    }
    else
    {
    return false;
    }
    } //
    // Other base methods
    //
    function sql_close()
    {
    if($this->db_connect_id)
    {
    if($this->query_result)
    {
    @mysql_free_result($this->query_result);
    }
    $result = @mysql_close($this->db_connect_id);
    return $result;
    }
    else
    {
    return false;
    }
    } //
    // Base query method
    //
    function sql_query($query = "", $transaction = FALSE)
    {
    // Remove any pre-existing queries
    unset($this->query_result);
    if($query != "")
    {
    $this->num_queries++; $this->query_result = @mysql_query($query, $this->db_connect_id);
    }
    if($this->query_result)
    {
    unset($this->row[$this->query_result]);
    unset($this->rowset[$this->query_result]);
    return $this->query_result;
    }
    else
    {
    return ( $transaction == END_TRANSACTION ) ? true : false;
    }
    } //
    // Other query methods
    //
    function sql_numrows($query_id = 0)
    {
    if(!$query_id)
    {
    $query_id = $this->query_result;
    }
    if($query_id)
    {
    $result = @mysql_num_rows($query_id);
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_affectedrows()
    {
    if($this->db_connect_id)
    {
    $result = @mysql_affected_rows($this->db_connect_id);
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_numfields($query_id = 0)
    {
    if(!$query_id)
    {
    $query_id = $this->query_result;
    }
    if($query_id)
    {
    $result = @mysql_num_fields($query_id);
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_fieldname($offset, $query_id = 0)
    {
    if(!$query_id)
    {
    $query_id = $this->query_result;
    }
    if($query_id)
    {
    $result = @mysql_field_name($query_id, $offset);
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_fieldtype($offset, $query_id = 0)
    {
    if(!$query_id)
    {
    $query_id = $this->query_result;
    }
    if($query_id)
    {
    $result = @mysql_field_type($query_id, $offset);
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_fetchrow($query_id = 0)
    {
    if(!$query_id)
    {
    $query_id = $this->query_result;
    }
    if($query_id)
    {
    $this->row[$query_id] = @mysql_fetch_array($query_id);
    return $this->row[$query_id];
    }
    else
    {
    return false;
    }
    }
    function sql_fetchrowset($query_id = 0)
    {
    if(!$query_id)
    {
    $query_id = $this->query_result;
    }
    if($query_id)
    {
    unset($this->rowset[$query_id]);
    unset($this->row[$query_id]);
    while($this->rowset[$query_id] = @mysql_fetch_array($query_id))
    {
    $result[] = $this->rowset[$query_id];
    }
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_fetchfield($field, $rownum = -1, $query_id = 0)
    {
    if(!$query_id)
    {
    $query_id = $this->query_result;
    }
    if($query_id)
    {
    if($rownum > -1)
    {
    $result = @mysql_result($query_id, $rownum, $field);
    }
    else
    {
    if(empty($this->row[$query_id]) && empty($this->rowset[$query_id]))
    {
    if($this->sql_fetchrow())
    {
    $result = $this->row[$query_id][$field];
    }
    }
    else
    {
    if($this->rowset[$query_id])
    {
    $result = $this->rowset[$query_id][$field];
    }
    else if($this->row[$query_id])
    {
    $result = $this->row[$query_id][$field];
    }
    }
    }
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_rowseek($rownum, $query_id = 0){
    if(!$query_id)
    {
    $query_id = $this->query_result;
    }
    if($query_id)
    {
    $result = @mysql_data_seek($query_id, $rownum);
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_nextid(){
    if($this->db_connect_id)
    {
    $result = @mysql_insert_id($this->db_connect_id);
    return $result;
    }
    else
    {
    return false;
    }
    }
    function sql_freeresult($query_id = 0){
    if(!$query_id)
    {
    $query_id = $this->query_result;
    } if ( $query_id )
    {
    unset($this->row[$query_id]);
    unset($this->rowset[$query_id]); @mysql_free_result($query_id); return true;
    }
    else
    {
    return false;
    }
    }
    function sql_error($query_id = 0)
    {
    $result["message"] = @mysql_error($this->db_connect_id);
    $result["code"] = @mysql_errno($this->db_connect_id); return $result;
    }} // class sql_db} // if ... define?>
      

  12.   

    不知道在哪篇文章上好像看介绍说在CGI模式下.connect 和 pconnect 是不分的..不知道是不是这样.
      

  13.   

    呵呵,我是PHP白痴!
    http://www.csdn.net/expert/topic/974/974756.xml?temp=.9171411
      

  14.   

    除非你很必要,否则不要用“永久连接”,尽量使用页面范围的连接,而不要使用会话和应用程序范围的连接方式。这个讨论在javascript也有一个,参考一下,主要考虑效率问题!
    http://www.csdn.net/expert/topic/974/974756.xml?temp=.9171411
      

  15.   

    我写的程序应用在一个长期几百人在线的站点上,用的是connect
    如果pconnect的话,当服务器过载时,会出现连接数不够的情况,而导致页面无法访问。而使用connect,每次用完都加上close的话,只会拖慢访问速度,而不会出现连结数不够的error页面,除非当你的服务器严重超载,才会什么页面都卡看不到。pconnect开发中稍微方便些,但是对于访问量稍大一点的站点,建议使用connect。
      

  16.   

    不论是什么语言,我个人认为应该可以对网站的普通用户页面和管理页面区别对待吧,就算是csdn这样的大网站,拥有斑竹权限的,拥有总版主权限的,总计才多少人呀……:)