AnPHP在更新后會自動讀取主庫,但是在阿里云數據庫中,是自動進行讀取分離的,因為只有一個數據庫連接,所以必須通過指定的參數才能實現強制讀取。
強制讀取主庫也有利于程序的調優和一性特點應用,如事務等。
用以下兩種方法來實現:
### 1、全局設置
#### 1.1 打開強讀
`AnDB::$FORCE_MASTER_OPEN = 1; // 已默認為0`
#### 1.2 設定強讀主庫的方法
`AnDB::$FORCE_MASTER = ‘/*FORCE_MASTER*/’; // 已默認設置 `
### 2、局部設置(自動加載全局設置)為真優先
#### 2.1 打開強讀
`_model()->db->FORCE_MASTER_OPEN = 1; // 如果未設置,執行完成更新類操作后,會自動設置為 1`
#### 2.2 設定強讀主庫的方法
`_model()->db->FORCE_MASTER = ‘/*FORCE_MASTER*/’; // 如果未設置自動加載 AnDB::$FORCE_MASTER `
### 實現原理
*****
* AnDB 類添加兩個靜態變量
* `AnDB::$FORCE_MASTER = '/*FORCE_MASTER*/`;' // 2018-09-03 默認為阿里數據庫強制讀主庫
* `AnDB::$FORCE_MASTER_OPEN = 0; `// 2018-09-03 云數據庫強制讀主庫,通過添加注釋的方式實現
* 在執行完`_model()-> udpate()\delete()\create()`后,再執行讀方法`_model()->read()、getList()、getFields()、 getTotal()`,會自動添加讀主庫的SQL注釋,其它方法不會自動添加
* 原理
* db對象判斷自身 `db->FORCE_MASTER_OPEN `和 `db->FORCE_MASTER` 的設置,可以自行賦值改變以上行為
* db對象在執行`read()\ getList()\ getFields()\getTotal()`會自動在執行的SQL語句添加 默認的前綴,以達到云數據的強制讀取主庫的目的
- AnPHP簡介
- 基本功能&設計
- 核心概念
- 執行流程
- 基礎原理
- AnModel與AnDB的調用過程
- 云數據庫的強制讀取主庫
- 快速入門
- AnModel使用
- 基本特性
- 基本的數據讀寫
- 參數$filter
- 參數$half_sql
- 參數$field
- 屬性
- 連貫操作
- create()
- delete()
- update()
- getFields()
- 設置工具
- 自動建表
- 分庫分表
- 調試工具
- table系統model
- countable系統model
- 高級使用
- 觀察者
- 勾子
- 關聯資源
- 強大的配置參數
- AnRequest
- AnResponse
- AnConfig
- AnCookie
- AnSession
- AnDB
- AnMemcacheWrapper
- AnRedis
- 類
- AnPHP
- 函數
- common.php
- 目錄結構
- Cache
- DB
- Model
- MongoDB
- Redis
- Sms
- test
- TR
- api
- sql
- 快速使用