findLibraryCaller(); ob_start(); print_r($sql); $text = ob_get_contents(); ob_end_clean(); new System_LogMessage($text, 'sql.log'); } /** * Логгер ошибок в работе с БД. */ function databaseErrorHandler($message, $info) { ob_start(); echo "
SQL Error: $message
\n"; print_r($info); echo ""; $text = ob_get_contents(); ob_end_clean(); new System_LogMessage($text, 'sql.errors.log'); if (error_reporting()) { new System_Error($text); } } require_once('vendors/DbSimple/lib/config.php'); require_once('vendors/DbSimple/lib/DbSimple/Generic.php'); class System_Database { private static $aDatabasesConfigs = array(); private static $oInstances = array(); public static function getInstance($link_name = false, $aDatabaseConfig = false) { if (!$link_name) { $link_name = 'site'; } if (!isset(self::$oInstances[$link_name])) { if (!$aDatabaseConfig) { if(!isset(self::$aDatabasesConfigs[$link_name])) { new System_LogMessage('Не удалось создать слой работы с БД. Не были указаны настройки подключения.'); } } else { self::$aDatabasesConfigs[$link_name] = $aDatabaseConfig; } if (self::$oInstances[$link_name] = DbSimple_Generic::connect(self::$aDatabasesConfigs[$link_name]['type'].'://'.self::$aDatabasesConfigs[$link_name]['user'].':'.self::$aDatabasesConfigs[$link_name]['password'].'@'.self::$aDatabasesConfigs[$link_name]['host'].'/'.self::$aDatabasesConfigs[$link_name]['name'])) { self::$oInstances[$link_name]->setErrorHandler('databaseErrorHandler'); self::$oInstances[$link_name]->setLogger('sqlLogger'); } } return self::$oInstances[$link_name]; } public function getStats($link_name = false) { $aResStats=array('sql_time' => 0, 'sql_count' => 0); if (!$link_name) { foreach (self::$oInstances as $oDb) { $aStats = $oDb->_statistics; $aResStats['sql_time'] += $aStats['time']; $aResStats['sql_count'] += $aStats['count']; } } else { if (isset(self::$oInstances[$link_name])) { $aStats=self::$oInstances[$link_name]->_statistics; $aResStats['sql_time'] += $aStats['time']; $aResStats['sql_count'] += $aStats['count']; } } $aResStats['sql_time']=round($aResStats['sql_time'], 4); return $aResStats; } private function __construct(){} private function __clone(){} } ?>