Selaa lähdekoodia

Fixed:db connection error

Jinhui Zhu 3 vuotta sitten
vanhempi
commit
d67199a0c5

+ 2 - 2
src/Base/Controller.php

@@ -49,7 +49,7 @@ abstract class Controller
      */
     public $response;
     /**
-     * @var Qii_Driver_xxx_Connection
+     * @var Qii\Driver\xx\Connection
      */
     public $db;
     /**
@@ -57,7 +57,7 @@ abstract class Controller
      */
     public $view;
     /**
-     * @var Qii_Cache_Abslute $cache
+     * @var Qii\Cache\Abslute $cache
      */
     public $cache;
     /**

+ 1 - 0
src/Config/Mine.php

@@ -209,6 +209,7 @@ class Mine
         'mobi' => 'application/octet-stream',
         'flac' => 'audio/flac',
         'ape' => 'audio/ape',
+        'apk' => 'application/vnd.android.package-archive'
     );
 
     public function __construct()

+ 17 - 2
src/Driver/Mysql/Connection.php

@@ -7,6 +7,15 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
     const VERSION = '1.2';
     protected $_dbInfo;
 
+    /**
+     * @var resource $_writeConnection  获取写的链接
+     */
+    protected static $_writeConnection = null;
+    /**
+     * @var resource$_readConnection 获取读的链接
+     */
+    protected static $_readConnection = null;
+
     public function __construct()
     {
         $this->_dbInfo = \Qii\Config\Register::getAppConfigure(\Qii\Config\Register::get(\Qii\Config\Consts::APP_DB));
@@ -17,6 +26,9 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
      */
     public function getReadConnection()
     {
+        if (self::$_readConnection != null) {
+            return self::$_readConnection;
+        }
         $dbInfo = $this->_dbInfo['master'];
         $useSlave = false;
 
@@ -30,7 +42,7 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
             try {
                 $connection = mysql_connect($dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db']);
                 if (!$connection) throw new \Qii\Exceptions\Errors(\Qii::i(1501, iconv("GBK", "UTF-8//TRANSLIT", mysql_error())), true);
-                return $connection;
+                return self::$_readConnection = $connection;
             } catch (Exception  $e) {
                 return $this->getWriteConnection();
             }
@@ -44,11 +56,14 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
      */
     public function getWriteConnection()
     {
+        if (self::$_writeConnection != null) {
+            return self::$_writeConnection;
+        }
         $dbInfo = $this->_dbInfo['master'];
         try {
             $connection = mysql_connect($dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db']);
             if (!$connection) throw new \Qii\Exceptions\Errors(\Qii::i(1501, iconv("GBK", "UTF-8//TRANSLIT", mysql_error())), true);
-            return $connection;
+            return self::$_writeConnection = $connection;
         } catch (Exception  $e) {
             throw new \Qii\Exceptions\Errors(\Qii::i(1500, $dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db'], toUTF8($e->getMessage())));
         }

+ 2 - 1
src/Driver/Mysql/Driver.php

@@ -16,7 +16,7 @@ class Driver extends \Qii\Driver\Base implements \Qii\Driver\Intf
 	 *
 	 * @var BOOL
 	 */
-	public $_debugSQL = true;
+	public $_debugSQL = false;
 	/**
 	 * 执行SQL的列表
 	 *
@@ -190,6 +190,7 @@ class Driver extends \Qii\Driver\Base implements \Qii\Driver\Intf
 	public function commit()//事务提交
 	{
 		\mysql_query('commit');
+		\mysql_query('end');
 	}
 
 	public function rollback()//事务回滚

+ 17 - 2
src/Driver/Mysqli/Connection.php

@@ -6,6 +6,15 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 	const VERSION = '1.2';
 	protected $_dbInfo;
 
+    /**
+     * @var resource $_writeConnection  获取写的链接
+     */
+    protected static $_writeConnection = null;
+    /**
+     * @var resource$_readConnection 获取读的链接
+     */
+    protected static $_readConnection = null;
+
 	public function __construct()
 	{
 		$this->_dbInfo = \Qii\Config\Register::getAppConfigure(\Qii\Config\Register::get(\Qii\Config\Consts::APP_DB));
@@ -16,6 +25,9 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 	 */
 	public function getReadConnection()
 	{
+        if (self::$_readConnection != null) {
+            return self::$_readConnection;
+        }
 		$dbInfo = $this->_dbInfo['master'];
 		$useSlave = false;
 
@@ -30,7 +42,7 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 				$connection = mysqli_connect($dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db']);
 				if (!$connection) throw new \Qii\Exceptions\Errors(\Qii::i(1501, iconv("GBK", "UTF-8//TRANSLIT", mysqli_connect_error())), true);
 				mysqli_select_db($connection, $dbInfo['db']);
-				return $connection;
+				return self::$_readConnection = $connection;
 			} catch (Exception  $e) {
 				return $this->getWriteConnection();
 			}
@@ -44,12 +56,15 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 	 */
 	public function getWriteConnection()
 	{
+        if (self::$_writeConnection != null) {
+            return self::$_writeConnection;
+        }
 		$dbInfo = $this->_dbInfo['master'];
 		try {
 			$connection = @mysqli_connect($dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db']);
 			if (!$connection) throw new \Qii\Exceptions\Errors(\Qii::i(1501, iconv("GBK", "UTF-8//TRANSLIT", mysqli_connect_error())), true);
 			mysqli_select_db($connection, $dbInfo['db']);
-			return $connection;
+			return self::$_writeConnection = $connection;
 		} catch (Exception  $e) {
 			throw new \Qii\Exceptions\Errors(\Qii::i(1500, $dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db'], toUTF8($e->getMessage())), __LINE__);
 		}

+ 2 - 1
src/Driver/Mysqli/Driver.php

@@ -16,7 +16,7 @@ class Driver extends \Qii\Driver\Base implements \Qii\Driver\Intf
 	 *
 	 * @var BOOL
 	 */
-	public $_debugSQL = true;
+	public $_debugSQL = false;
 	/**
 	 * 执行SQL的列表
 	 *
@@ -202,6 +202,7 @@ class Driver extends \Qii\Driver\Base implements \Qii\Driver\Intf
 	public function commit()
 	{
 		\mysqli_query('commit');
+		\mysqli_query('end');
 	}
 
 	/**

+ 17 - 6
src/Driver/Pdo/Connection.php

@@ -13,10 +13,15 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 	 * @var array $_dbInfo 数据库配置
 	 */
 	protected $_dbInfo;
-	/**
-	 * @var res $_instanceConnection 数据库连接
-	 */
-	protected $_instanceConnection;
+
+    /**
+     * @var resource $_writeConnection  获取写的链接
+     */
+	protected static $_writeConnection = null;
+    /**
+     * @var resource$_readConnection 获取读的链接
+     */
+	protected static $_readConnection = null;
 
 	public function __construct()
 	{
@@ -30,6 +35,9 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 	 */
 	public function getReadConnection()
 	{
+        if (self::$_readConnection != null) {
+            return self::$_readConnection;
+        }
 		$dbInfo = $this->_dbInfo['master'];
 		$useSlave = false;
 
@@ -45,7 +53,7 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 				} else {
 					$dsn = $this->_dbInfo['use_db_driver'] . ":host=" . $dbInfo['host'] . ";dbname=" . $dbInfo['db'];
 				}
-				return new \PDO($dsn, $dbInfo['user'], $dbInfo['password']);
+				return self::$_readConnection = new \PDO($dsn, $dbInfo['user'], $dbInfo['password']);
 			} catch (Exception  $e) {
 				return $this->getWriteConnection();
 			}
@@ -59,6 +67,9 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 	 */
 	public function getWriteConnection()
 	{
+	    if (self::$_writeConnection != null) {
+	        return self::$_writeConnection;
+        }
 		$dbInfo = $this->_dbInfo['master'];
 		try {
 			if ($this->_dbInfo['use_db_driver'] == 'mssql') {
@@ -66,7 +77,7 @@ class Connection extends \Qii\Driver\ConnBase implements \Qii\Driver\ConnIntf
 			} else {
 				$dsn = $this->_dbInfo['use_db_driver'] . ":host=" . $dbInfo['host'] . ";dbname=" . $dbInfo['db'];
 			}
-			return new \PDO($dsn, $dbInfo['user'], $dbInfo['password']);
+			return self::$_writeConnection = new \PDO($dsn, $dbInfo['user'], $dbInfo['password']);
 		} catch (Exception  $e) {
 			throw new \Qii\Exceptions\Errors(\Qii::i(1500, $dbInfo['host'], $dbInfo['user'], $dbInfo['password'], $dbInfo['db'], toUTF8($e->getMessage())), __LINE__);
 		}

+ 12 - 5
src/Driver/Pdo/Driver.php

@@ -16,7 +16,7 @@ class Driver extends \Qii\Driver\Base implements \Qii\Driver\Intf
      *
      * @var BOOL
      */
-    public $_debugSQL = true;
+    public $_debugSQL = false;
     /**
      * 执行SQL的列表
      *
@@ -224,8 +224,8 @@ class Driver extends \Qii\Driver\Base implements \Qii\Driver\Intf
      */
     public function transaction()
     {
-        $this->db['CURRENT'] = $this->connection->getWriteConnection();
-        return $this->db['CURRENT']->beginTransaction();
+        $db = $this->connection->getWriteConnection();
+        return $db->beginTransaction();
     }
 
     /**
@@ -233,7 +233,8 @@ class Driver extends \Qii\Driver\Base implements \Qii\Driver\Intf
      */
     public function commit()
     {
-        $this->db['CURRENT']->commit();
+        $db = $this->connection->getWriteConnection();
+        $db->commit();
     }
 
     /**
@@ -241,7 +242,13 @@ class Driver extends \Qii\Driver\Base implements \Qii\Driver\Intf
      */
     public function rollback()
     {
-        $this->db['CURRENT']->rollBack();
+        $db = $this->connection->getWriteConnection();
+        try {
+            $db->rollBack();
+            return true;
+        }catch(\PDOException $e) {
+            return false;
+        }
     }
 
     /**

+ 1 - 1
src/Library/Upload.php

@@ -220,7 +220,7 @@ class Upload
         }
         //如果设置允许所有文件上传就不检测
         if ($this->allowed[0] != '*' && !in_array($extension, $this->allowed)) {
-            $data['code'] = 1407;
+            $data['code'] = 1408;
             $data['src'] = '';
             $data['size'] = 0;
             $data['extension'] = $extension;