最近遇到一个问题,nginx+php+mysql。由于网站用户比较多,会经常有一些连接数据库的操作、所以用了pdo长连接。
$db = new PDO ( 'mysql:host=' . DB_HOST . ';port=' . DB_PORT . ';dbname='DB_NAME';charset=UTF8', DB_USER, DB_PASSWORD, array (PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_PERSISTENT=>true) )
retuen $GLOBALS['_db'] = $db;
这样一般情况是不会出现问题,但是网站会时不时的挂掉,需要重启nginx的fpm服务,才可正常运转。
老大估计是这个数据库连接不稳定。让我去找下连接池,或者$GLOBAL的局限性,找一个更稳定的连接方法,解决这个问题。
真心不会阿……求大神赐教!

解决方案 »

  1.   

    1、数据库连接池由第三方提供(ODBC、JDBC)
    php 的 mysql 函数只提供基本数据库操作,并无连接池概念2、长连接资源从空闲到再次复用有一个时间间隔,当数据库连接请求的密度小于此间隔时,空闲的长连接资源不会被利用。从而造成大量资源被浪费,而数据库会因连接数过多而瘫痪3、从你的描述上看,并不能一定认为是数据库的原因
      

  2.   

    本帖最后由 xuzuning 于 2013-02-21 11:05:57 编辑