朱金辉 1 rok temu
rodzic
commit
3b06b2a601

+ 7 - 5
src/Config/Register.php

@@ -224,14 +224,16 @@ class Register
      * @param String $iniFile ini文件名
      * @param Array $array
      */
-    public static function mergeAppConfigure($iniFile, $array)
+    public static function mergeAppConfigure($iniFile, $array, $write = true)
     {
         if (!is_array($array)) return;
         $config = Register::getIniConfigure($iniFile);
-        $cacheName = Register::getCacheName($iniFile);
-        $config = self::array_merge_recursive_distinct($config, $array);
-        Register::set($cacheName, $config);
-        return $config;
+        $merged = self::array_merge_recursive_distinct($config, $array);
+        if($write) {
+            $cacheName = Register::getCacheName($iniFile);
+            Register::set($cacheName, $merged);
+        }
+        return $merged;
     }
 
 	/**

+ 1 - 2
src/Driver/Model.php

@@ -82,8 +82,7 @@ class Model
         $this->_language = Psr4::getInstance()->loadClass('\Qii\Language\Loader');
         $this->_request = Psr4::getInstance()->loadClass('Qii\Request\Http');
         $this->_helper = Psr4::getInstance()->loadClass('Qii\Autoloader\Helper');
-        Register::mergeAppConfigure(Register::getAppConfigure(Consts::APP_DB), $dbInfo);
-        $dbInfo = Register::getAppConfigure(Register::get(Consts::APP_DB));
+        $dbInfo = Register::mergeAppConfigure(Register::getAppConfigure(Consts::APP_DB), $dbInfo);
         if (isset($this->_dbInfo['driver'])) {
             $this->_driver = $this->_dbInfo['driver'];
         }

+ 8 - 8
src/Driver/Mysql/Connection.php

@@ -31,16 +31,16 @@ class Connection extends ConnBase implements ConnIntf
      */
     public function getReadConnection()
     {
-        if (self::$_readConnection != null) {
-            return self::$_readConnection;
-        }
         list($dbInfo, $useSlave) = $this->getDBInfoAndSalve();
+        if (isset(self::$_readConnection[$dbInfo['db']]) && self::$_readConnection[$dbInfo['db']] != null) {
+            return self::$_readConnection[$dbInfo['db']];
+        }
 
         if ($useSlave) {
             try {
                 $connection = mysql_connect($dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db']);
                 if (!$connection) throw new Errors(\Qii::i(1501, iconv("GBK", "UTF-8//TRANSLIT", mysql_error())), true);
-                return self::$_readConnection = $connection;
+                return self::$_readConnection[$dbInfo['db']] = $connection;
             } catch (Exception  $e) {
                 return $this->getWriteConnection();
             }
@@ -54,14 +54,14 @@ class Connection extends ConnBase implements ConnIntf
      */
     public function getWriteConnection()
     {
-        if (self::$_writeConnection != null) {
-            return self::$_writeConnection;
-        }
         $dbInfo = $this->_dbInfo['master'];
+        if (isset(self::$_writeConnection[$dbInfo['db']]) && self::$_writeConnection[$dbInfo['db']] != null) {
+            return self::$_writeConnection[$dbInfo['db']];
+        }
         try {
             $connection = mysql_connect($dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db']);
             if (!$connection) throw new Errors(\Qii::i(1501, iconv("GBK", "UTF-8//TRANSLIT", mysql_error())), true);
-            return self::$_writeConnection = $connection;
+            return self::$_writeConnection[$dbInfo['db']] = $connection;
         } catch (Exception  $e) {
             throw new Errors(\Qii::i(1500, $dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db'], toUTF8($e->getMessage())));
         }

+ 8 - 8
src/Driver/Mysqli/Connection.php

@@ -31,17 +31,17 @@ class Connection extends ConnBase implements ConnIntf
 	 */
 	public function getReadConnection()
 	{
-        if (self::$_readConnection != null) {
-            return self::$_readConnection;
-        }
         list($dbInfo, $useSlave) = $this->getDBInfoAndSalve();
+        if (isset(self::$_readConnection[$dbInfo['db']]) && self::$_readConnection[$dbInfo['db']] != null) {
+            return self::$_readConnection[$dbInfo['db']];
+        }
 
 		if ($useSlave) {
 			try {
 				$connection = mysqli_connect($dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db']);
 				if (!$connection) throw new Errors(\Qii::i(1501, iconv("GBK", "UTF-8//TRANSLIT", mysqli_connect_error())), true);
 				mysqli_select_db($connection, $dbInfo['db']);
-				return self::$_readConnection = $connection;
+				return self::$_readConnection[$dbInfo['db']] = $connection;
 			} catch (Exception  $e) {
 				return $this->getWriteConnection();
 			}
@@ -55,15 +55,15 @@ class Connection extends ConnBase implements ConnIntf
 	 */
 	public function getWriteConnection()
 	{
-        if (self::$_writeConnection != null) {
-            return self::$_writeConnection;
+        $dbInfo = $this->_dbInfo['master'];
+        if (isset(self::$_writeConnection[$dbInfo['db']]) && self::$_writeConnection[$dbInfo['db']] != null) {
+            return self::$_writeConnection[$dbInfo['db']];
         }
-		$dbInfo = $this->_dbInfo['master'];
 		try {
 			$connection = @mysqli_connect($dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db']);
 			if (!$connection) throw new Errors(\Qii::i(1501, iconv("GBK", "UTF-8//TRANSLIT", mysqli_connect_error())), true);
 			mysqli_select_db($connection, $dbInfo['db']);
-			return self::$_writeConnection = $connection;
+			return self::$_writeConnection[$dbInfo['db']] = $connection;
 		} catch (Exception  $e) {
 			throw new Errors(\Qii::i(1500, $dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db'], toUTF8($e->getMessage())), __LINE__);
 		}

+ 2 - 2
src/Driver/Pdo/Connection.php

@@ -30,7 +30,7 @@ class Connection extends ConnBase implements ConnIntf
 	public function getReadConnection()
 	{
         list($dbInfo, $useSlave) = $this->getDBInfoAndSalve();
-        if (self::$_readConnection[$dbInfo['db']] != null) {
+        if (isset(self::$_readConnection[$dbInfo['db']]) && self::$_readConnection[$dbInfo['db']] != null) {
             return self::$_readConnection[$dbInfo['db']];
         }
 		if ($useSlave) {
@@ -55,7 +55,7 @@ class Connection extends ConnBase implements ConnIntf
 	public function getWriteConnection()
 	{
         $dbInfo = $this->_dbInfo['master'];
-	    if (self::$_writeConnection[$dbInfo['db']] != null) {
+	    if (isset(self::$_writeConnection[$dbInfo['db']]) && self::$_writeConnection[$dbInfo['db']] != null) {
 	        return self::$_writeConnection[$dbInfo['db']];
         }
 		try {