在一次mysql_connect()连接成功的时候,能不能第二次的时候,再得到上一次的连接,不去重新连接,这样可以省下握手的时间

解决方案 »

  1.   

    不使用持久性连接不可以吗
    mysql_pconnect 占资源太多,也容易出现连接数过多
      

  2.   

    你不用的时候就close();掉,不会太占资源的!
      

  3.   

    长连接是close不掉的,只有达到my.cnf中wait_timeout或interactive_timeout所设置的时间才会自动close,所以不建议使用长连接。
    你的需求描述有些矛盾,既不想让它一直连接着,又希望每次都使用同一个连接。短连接模式下,PHP的一个脚本结束后就会释放当前连接,释放后再想连接肯定是要重新去握手。
    我想你要表达的可能是在多个线程同时连接数据库时,只使用同一个连接,而非再去单独建立连接,也就是说,PHP时时刻刻都与MYSQL只存在一个连接。那么你应该去看看单例模式。避免建立多余的连接对象。大概意思是:IF 存在数据库连接
       使用现有连接对象
    ELSE
       建立数据库连接对象
    END IF
      

  4.   

    IF 存在数据库连接
      使用现有连接对象
    ELSE
      建立数据库连接对象
    END IF
    就是这个意思,
    看了下执行时间,每次都去连接,mysql_close() ,连接这段花了我一些时间,差不多400多毫秒,
    使用了mysql_pconnect,第一次花了500多毫秒,刷新时,连接这块的时间降到200毫秒以下,
    看了这么多讨论,在刷新的时候,如果使用mysql_connect是没办法保留下,上一次的连接的
      

  5.   

    其实对于单例模式,主要是针对并发访问时所产生的数据库连接对象重复建立的问题。用户1 访问 a脚本当a脚本还没有执行完或还没有执行到mysql_close()的那一步时,用户2也来访问了,那么此时,PHP与mysql之间还保持着一个连接,那么就不需要为用户2再建立一个连接对象,而应该是直接使用用户1访问是建立的连接对象。关键点在于这里,在于并发访问。强烈建议不要使用pconnect。我有过因为使用它造成mysql服务器崩溃的情况。
      

  6.   

    解决这个问题,最好的方法就是单例模式,因为只有一个实例在运行,上次连接如果没有断掉,就可以继续使用,在多用户的情况下,就不用再去创建新的连接,省下了建立连接的时间
    ShadowSniper 回答,完全正确