bushbaby/doctrine-reconnect

Zend Framework 2 module which attempts to reconnect when the database has 'gone away'

Maintainers

👁 bushbaby

Package info

github.com/bushbaby/BsbDoctrineReconnect

pkg:composer/bushbaby/doctrine-reconnect

Statistics

Installs: 4 038

Dependents: 0

Suggesters: 0

Stars: 5

Open Issues: 1

0.1.1 2015-01-09 22:25 UTC

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 68946b6736d6962113880dae32759b7eb8594588

zf2doctrine

This package is auto-updated.

Last update: 2026-06-24 08:13:35 UTC


README

Small Zend Framework 2 module which attempts to reconnect when the database has 'gone away'.

👁 Latest Stable Version
👁 Total Downloads
👁 Latest Unstable Version
👁 License

👁 Build Status
👁 Code Coverage
👁 Scrutinizer Code Quality
👁 Dependency Status

In order to do this it overrides Doctrine DBAL Driver provided by the DoctrineORMModule.

I did not invent this method. I just liked it and thought it deserved a zf2 module so it can be reused easily. Credits ought to go to circlical.

Installation

php composer.phar require bushbaby/doctrine-reconnect

Then add BsbDoctrineReconnect to your config/application.config.php.

Adjust your Doctrine DB Config

Copy the config/bsb-doctrine-reconnect.local.php.dist to your config/autoload/config/bsb-doctrine-reconnect.local.php directory and override the specified driverClass for each connection you have have defined.

<?php
return array(
 'doctrine' => array(
 'connection' => array(
 'orm_default' => array(
 'driverClass' => 'BsbDoctrineReconnect\DBAL\Driver\PDOMySql\Driver',
 'wrapperClass' => 'BsbDoctrineReconnect\DBAL\Connection',

 'params' => array(
 'driverOptions' => array(
 'x_reconnect_attempts' => 10,
 ),
 )
 )
 )
 ),
);

Test

You can manually test this actually works by connecting to mysql from the cli and killing the appropriate connection;

mysql> SHOW PROCESSLIST;
+----+------+-----------+----------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----------+---------+------+-------+------------------+
| 1 | root | localhost | database | Sleep | 1 | | NULL |
| 4 | root | localhost | NULL | Query | 0 | NULL | SHOW PROCESSLIST |
+----+------+-----------+----------+---------+------+-------+------------------+
4 rows in set (0.00 sec)

mysql> KILL 1;
Query OK, 0 rows affected (0.00 sec)

Known limitations

This method only works for non transactional statements.