From 0ee57208b3eb2e4c45412fe45d146c8e8e3458e6 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Wed, 23 Sep 2015 06:58:05 -0400 Subject: [PATCH] Add possibility to set PDO::ATTR_PREFETCH and PDO::ATTR_TIMEOUT via DSN string --- program/lib/Roundcube/rcube_db_mysql.php | 2 +- program/lib/Roundcube/rcube_db.php | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/program/lib/Roundcube/rcube_db.php b/program/lib/Roundcube/rcube_db.php index 510d001..8c5bc19 100644 --- a/program/lib/Roundcube/rcube_db.php +++ b/program/lib/Roundcube/rcube_db.php @@ -149,10 +149,6 @@ $dsn_string = $this->dsn_string($dsn); $dsn_options = $this->dsn_options($dsn); - if ($this->db_pconn) { - $dsn_options[PDO::ATTR_PERSISTENT] = true; - } - // Connect try { // with this check we skip fatal error on PDO object creation @@ -1271,6 +1267,18 @@ { $result = array(); + if ($this->db_pconn) { + $result[PDO::ATTR_PERSISTENT] = true; + } + + if (!empty($dsn['prefetch'])) { + $result[PDO::ATTR_PREFETCH] = (int) $dsn['prefetch']; + } + + if (!empty($dsn['timeout'])) { + $result[PDO::ATTR_TIMEOUT] = (int) $dsn['timeout']; + } + return $result; } diff --git a/program/lib/Roundcube/rcube_db_mysql.php b/program/lib/Roundcube/rcube_db_mysql.php index b013341..ee2194f 100644 --- a/program/lib/Roundcube/rcube_db_mysql.php +++ b/program/lib/Roundcube/rcube_db_mysql.php @@ -118,7 +118,7 @@ */ protected function dsn_options($dsn) { - $result = array(); + $result = parent::dsn_options($dsn); if (!empty($dsn['key'])) { $result[PDO::MYSQL_ATTR_SSL_KEY] = $dsn['key']; -- Gitblit v1.9.1