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
- 快速使用