2014-09-19 64 views
0

在ZF2上,我需要使用持续的MySQL连接并重新连接,并且MySQL消失了。 但我不知道我应该在哪里激活MYSQL_OPT_RECONNECT参数。在ZF2中使用MySQL持久连接

我的数据库适配器definied如下:

'db' => array(
     'driver'   => 'Pdo', 
     'dsn'   => 'mysql:dbname=DB_NAME;host=HOST', 
     'driver_options' => array(
      PDO::MYSQL_ATTR_INIT_COMMAND  => 'SET NAMES \'UTF8\'', 
     ), 
     'username' => 'LOGIN', 
     'password' => 'PWD', 
    ), 

我已经试过了诸如:

'db' => array(
    'driver'   => 'Pdo', 
    'dsn'   => 'mysql:dbname=DB_NAME;host=HOST', 
    'driver_options' => array(
     PDO::MYSQL_ATTR_INIT_COMMAND  => 'SET NAMES \'UTF8\'', 
     'AUTO_RECONNECT_ON_UNSERIALIZE' => 1, 
    ), 
    'options'  => array(
     'AUTO_RECONNECT_ON_UNSERIALIZE' => 1, 
    ), 
    'username' => 'LOGIN', 
    'password' => 'PWD', 
), 

,并没有什么作品。

如何使这个的mysql_options(&的MySQL,MYSQL_OPT_RECONNECT,&重新连接); 发生在某个地方?

回答

1

好了,答案是:

'db' => array(
    'driver'   => 'Pdo', 
    'dsn'   => 'mysql:dbname=DB_NAME;host=HOST', 
    'driver_options' => array(
     PDO::MYSQL_ATTR_INIT_COMMAND  => 'SET NAMES \'UTF8\'', 
    ), 
    'options'  => array(
     PDO::ATTR_PERSISTENT => true', 
    ), 
    'username' => 'LOGIN', 
    'password' => 'PWD', 
), 

但利用持续性连接的可能不是一个很好的适合每个人,所以你也可以捕获任何“MySQL服务器消失的错误”,并着手重新连接通过:

$this->tableGateway->getAdapter()->getDriver()->getConnection()->disconnect(); 
$this->tableGateway->getAdapter()->getDriver()->registerConnection($this->getAdapter()->getDriver()->getConnection()->connect()); 
if($this->tableGateway->getAdapter()->getDriver()->getConnection()->isConnected()) { 
     return true; 
}