From df5d2a06657be3abb671c44295848afefc7f8fd4 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Sun, 3 Dec 2017 14:49:18 +0300 Subject: [PATCH] pluginhost: do not connect via legacy DB api until requested log all initiated legacy database connections --- classes/auth/base.php | 2 -- classes/db.php | 56 +++++++++++++++++++++++++++----------- classes/handler.php | 2 -- classes/handler/public.php | 2 +- classes/pluginhost.php | 4 +-- 5 files changed, 42 insertions(+), 24 deletions(-) diff --git a/classes/auth/base.php b/classes/auth/base.php index 652b66e6..dbc77f8c 100644 --- a/classes/auth/base.php +++ b/classes/auth/base.php @@ -1,10 +1,8 @@ dbh = Db::get(); $this->pdo = Db::pdo(); } diff --git a/classes/db.php b/classes/db.php index 1a4d0b2e..05fb82d8 100644 --- a/classes/db.php +++ b/classes/db.php @@ -1,12 +1,29 @@ link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : ""); + + if (!$this->link) { + print("Error connecting through adapter: " . $this->adapter->last_error()); + exit(101); + } + + error_reporting($er); + } + + private function pdo_connect() { + $db_port = defined('DB_PORT') && DB_PORT ? ';port='.DB_PORT : ''; $this->pdo = new PDO(DB_TYPE . ':dbname='.DB_NAME.';host='.DB_HOST.$db_port, DB_USER, DB_PASS); - $this->pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); - if (!$this->pdo) { print("Error connecting via PDO."); exit(101); } + $this->pdo->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING ); + if (DB_TYPE == "pgsql") { $this->pdo->query("set client_encoding = 'UTF-8'"); @@ -52,32 +81,27 @@ class Db implements IDb { $this->pdo->query("SET NAMES " . MYSQL_CHARSET); } } - - $this->link = $this->adapter->connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, defined('DB_PORT') ? DB_PORT : ""); - - if (!$this->link) { - print("Error connecting through adapter: " . $this->adapter->last_error()); - exit(101); - } - - error_reporting($er); - } - - private function __clone() { - // } public static function get() { if (self::$instance == null) self::$instance = new self(); + if (!self::$instance->link) { + self::$instance->legacy_connect(); + } + return self::$instance; } - public static function pdo() { + public static function pdo() { if (self::$instance == null) self::$instance = new self(); + if (!self::$instance->pdo) { + self::$instance->pdo_connect(); + } + return self::$instance->pdo; } diff --git a/classes/handler.php b/classes/handler.php index 483b573e..5b110949 100644 --- a/classes/handler.php +++ b/classes/handler.php @@ -1,11 +1,9 @@ dbh = Db::get(); $this->pdo = Db::pdo(); $this->args = $args; } diff --git a/classes/handler/public.php b/classes/handler/public.php index a5b7f94b..e2df4a3c 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -338,7 +338,7 @@ class Handler_Public extends Handler { } function globalUpdateFeeds() { - RPC::updaterandomfeed_real($this->dbh); + RPC::updaterandomfeed_real(); PluginHost::getInstance()->run_hooks(PluginHost::HOOK_UPDATE_TASK, "hook_update_task", false); } diff --git a/classes/pluginhost.php b/classes/pluginhost.php index 561a10a4..f07e2bbf 100644 --- a/classes/pluginhost.php +++ b/classes/pluginhost.php @@ -1,6 +1,5 @@ dbh = Db::get(); $this->pdo = Db::pdo(); $this->storage = array(); @@ -91,7 +89,7 @@ class PluginHost { } function get_dbh() { - return $this->dbh; + return Db::get(); } function get_pdo() { -- 2.39.2