X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDatabase%2FDBA.php;h=832f0a444f994684354267123a0f9ff6c8c39fed;hb=67aa1888309e83648be62988b10e757c14a2e2a9;hp=d2a739e9313aa07b9be4aaf948bab6398c1930e2;hpb=83f49fcf15c29263f1448b728d60245b90f847fa;p=friendica.git diff --git a/src/Database/DBA.php b/src/Database/DBA.php index d2a739e931..832f0a444f 100644 --- a/src/Database/DBA.php +++ b/src/Database/DBA.php @@ -2,10 +2,11 @@ namespace Friendica\Database; -use Friendica\Core\Config\IConfigCache; +use Friendica\Core\Config\Cache\IConfigCache; use Friendica\Core\Logger; use Friendica\Core\System; use Friendica\Util\DateTimeFormat; +use Friendica\Util\Profiler; use mysqli; use mysqli_result; use mysqli_stmt; @@ -35,6 +36,14 @@ class DBA * @var IConfigCache */ private static $configCache; + /** + * @var Profiler + */ + private static $profiler; + /** + * @var string + */ + private static $basePath; private static $server_info = ''; private static $connection; private static $driver; @@ -50,14 +59,16 @@ class DBA private static $db_name = ''; private static $db_charset = ''; - public static function connect($configCache, $serveraddr, $user, $pass, $db, $charset = null) + public static function connect($basePath, IConfigCache $configCache, Profiler $profiler, $serveraddr, $user, $pass, $db, $charset = null) { if (!is_null(self::$connection) && self::connected()) { return true; } // We are storing these values for being able to perform a reconnect + self::$basePath = $basePath; self::$configCache = $configCache; + self::$profiler = $profiler; self::$db_serveraddr = $serveraddr; self::$db_user = $user; self::$db_pass = $pass; @@ -158,7 +169,7 @@ class DBA public static function reconnect() { self::disconnect(); - $ret = self::connect(self::$configCache, self::$db_serveraddr, self::$db_user, self::$db_pass, self::$db_name, self::$db_charset); + $ret = self::connect(self::$basePath, self::$configCache, self::$profiler, self::$db_serveraddr, self::$db_user, self::$db_pass, self::$db_name, self::$db_charset); return $ret; } @@ -392,7 +403,6 @@ class DBA * @throws \Exception */ public static function p($sql) { - $a = \get_app(); $stamp1 = microtime(true); @@ -415,7 +425,7 @@ class DBA if ((substr_count($sql, '?') != count($args)) && (count($args) > 0)) { // Question: Should we continue or stop the query here? - Logger::log('Parameter mismatch. Query "'.$sql.'" - Parameters '.print_r($args, true), Logger::DEBUG); + Logger::warning('Query parameters mismatch.', ['query' => $sql, 'args' => $args, 'callstack' => System::callstack()]); } $sql = self::cleanQuery($sql); @@ -582,7 +592,7 @@ class DBA self::$errorno = $errorno; } - $a->saveTimestamp($stamp1, 'database'); + self::$profiler->saveTimestamp($stamp1, 'database', System::callstack()); if (self::$configCache->get('system', 'db_log')) { $stamp2 = microtime(true); @@ -611,7 +621,6 @@ class DBA * @throws \Exception */ public static function e($sql) { - $a = \get_app(); $stamp = microtime(true); @@ -654,7 +663,7 @@ class DBA self::$errorno = $errorno; } - $a->saveTimestamp($stamp, "database_write"); + self::$profiler->saveTimestamp($stamp, "database_write", System::callstack()); return $retval; } @@ -777,7 +786,6 @@ class DBA * @return array current row */ public static function fetch($stmt) { - $a = \get_app(); $stamp1 = microtime(true); @@ -824,7 +832,7 @@ class DBA } } - $a->saveTimestamp($stamp1, 'database'); + self::$profiler->saveTimestamp($stamp1, 'database', System::callstack()); return $columns; } @@ -1031,7 +1039,7 @@ class DBA * This process must only be started once, since the value is cached. */ private static function buildRelationData() { - $definition = DBStructure::definition(self::$configCache->get('system', 'basepath')); + $definition = DBStructure::definition(self::$basePath); foreach ($definition AS $table => $structure) { foreach ($structure['fields'] AS $field => $field_struct) { @@ -1534,7 +1542,6 @@ class DBA * @return boolean was the close successful? */ public static function close($stmt) { - $a = \get_app(); $stamp1 = microtime(true); @@ -1562,7 +1569,7 @@ class DBA break; } - $a->saveTimestamp($stamp1, 'database'); + self::$profiler->saveTimestamp($stamp1, 'database', System::callstack()); return $ret; }