Set database connection timeout in CodeIgniter 3
Asked Answered
D

1

5

We are working with 2 databases, our local database and an external database. But now our external database is down (we're still under development so it's good we came across this issue) and it now tries to connect to the external database for 30 seconds, how can I change the connection timeout of the Database to something like 1 - 2 seconds? I am using Codeigniter with the PDO drivers on my databases. Is there anyone with a clean solution for this problem?

Daze answered 16/9, 2015 at 18:50 Comment(4)
Try this php.net/manual/en/…Corazoncorban
I'm not using mysql @CorazoncorbanDaze
Have you tried setting PDO::ATTR_TIMEOUT? What is your database though?Drumstick
That's one way to fix the issue, but I don't know if you're using codeigniter, it lets you choose between multiple drivers, (mysql, mysqli and PDO). I would like to know if it's possible to fix this issue without editting to core (which would be the PDO driver as I am using PDO to talk to a Mysql database) @user3584460Daze
D
9

It is not a documented feature, but you can do this from the database config file (application/config/database.php) by adding options setting e.g.:

$db['default']['options'] = array(PDO::ATTR_TIMEOUT => 5);

The other settings which use the same internal mechanism (e.g. PDO::MYSQL_ATTR_INIT_COMMAND set with $db['default']['stricton'] and PDO::MYSQL_ATTR_COMPRESS set with $db['default']['compress']) are not affected by this.

If you want to dig deeper or check which options are set, you can log $this->options in db_connect function in system/database/drivers/pdo/pdo_driver.php and also check database/drivers/pdo/subdrivers/pdo_mysql_driver.php.

Drumstick answered 19/9, 2015 at 21:3 Comment(1)
Exactly what I was looking for, working like a charm! Thanks alot!! I cannot yet give you the bounty but will do so once I can.Daze

© 2022 - 2024 — McMap. All rights reserved.