php 分布式数据库查询,分布式数据库 · Thinkphp5.0完全开发手册 · 看云
# 分布式数据库
ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。
配置`database.deploy` 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下:
```
//分布式数据库配置定义
return [
// 启用分布式数据库
'deploy' => 1,
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '192.168.1.1,192.168.1.2',
// 数据库名
'database' => 'demo',
// 数据库用户名
'username' => 'root',
// 数据库密码
'password' => '',
// 数据库连接端口
'hostport' => '',
]
```
连接的数据库个数取决于`hostname`定义的数量,所以即使是两个相同的IP也需要重复定义,但是其他的参数如果存在相同的可以不用重复定义,例如:
```
'hostport'=>'3306,3306'
```
和
```
'hostport'=>'3306'
```
等效。
```
'username'=>'user1',
'password'=>'pwd1',
```
和
```
'username'=>'user1,user1',
'password'=>'pwd1,pwd1',
```
等效。
还可以设置分布式数据库的读写是否分离,默认的情况下读写不分离,也就是每台服务器都可以进行读写操作,对于主从式数据库而言,需要设置读写分离,通过下面的设置就可以:
```
'rw_separate' => true,
```
在读写分离的情况下,默认第一个数据库配置是主服务器的配置信息,负责写入数据,如果设置了`master_num`参数,则可以支持多个主服务器写入。其它的都是从数据库的配置信息,负责读取数据,数量不限制。每次连接从服务器并且进行读取操作的时候,系统会随机进行在从服务器中选择。
还可以设置`slave_no` 指定某个服务器进行读操作。
> 如果从数据库连接错误,会自动切换到主数据库连接。
调用模型的CURD操作的话,系统会自动判断当前执行的方法的读操作还是写操作,如果你用的是原生SQL,那么需要注意系统的默认规则: **写操作必须用模型的execute方法,读操作必须用模型的query方法**,否则会发生主从读写错乱的情况。
> 注意:主从数据库的数据同步工作不在框架实现,需要数据库考虑自身的同步或者复制机制。
php 分布式数据库查询,分布式数据库 · Thinkphp5.0完全开发手册 · 看云相关推荐
- think php上传图片,上传 · ThinkPHP5.0完全开发手册 · 看云
## 上传文件 `ThinkPHP5.0`对文件上传的支持更加简单. > 内置的上传只是上传到本地服务器,上传到远程或者第三方平台的话需要自己扩展. 假设表单代码如下: ~~~ ~~~ 然后在控 ...
- php标签扩展,标签扩展 · ThinkPHP5.0完全开发手册 · 看云
## 标签库加载 模板中加载标签库,预加载自定义标签库,扩展内置标签库的加载 请参考:模板/标签库 >[info]建议开发者将自定义标签库请放置应用目录中,请勿放在框架系统目录内,以免使用`Co ...
- php 获取路由参数,路由参数 · ThinkPHP5.0完全开发手册 · 看云
## 路由参数 路由参数是指可以设置一些路由匹配的条件参数,主要用于验证当前的路由规则是否有效,主要包括: |参数|说明| |---|---| |method|请求类型检测,支持多个请求类型| |ex ...
- php控制器的作用,控制器定义 · ThinkPHP5.0完全开发手册 · 看云
ThinkPHP V5.0的控制器定义比较灵活,可以无需继承任何的基础类,也可以继承官方封装的`\think\Controller`类或者其他的控制器类. ## 控制器定义 一个典型的控制器类定义如下 ...
- 多语言php,多语言 · ThinkPHP5.0完全开发手册 · 看云
ThinkPHP内置通过`\think\Lang`类提供多语言支持,如果你的应用涉及到国际化的支持,那么可以定义相关的语言包文件.任何字符串形式的输出,都可以定义语言常量. ## 开启和加载语言包 默 ...
- php 实现域名路由器,域名路由 · ThinkPHP5.0完全开发手册 · 看云
ThinkPHP支持完整域名.子域名和IP部署的路由和绑定功能,同时还可以起到简化URL的作用. 要启用域名部署路由功能,首先需要开启: ~~~ 'url_domain_deploy' => t ...
- 比较标签 php,比较标签 · ThinkPHP5.0完全开发手册 · 看云
比较标签用于简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法都一致,如下: ~~~ {比较标签 name="变量" value="值 ...
- think php5目录结构,目录结构 · ThinkPHP5.1完全开发手册 · 看云
## 目录结构 >[info] 相对于`5.0`来说,`5.1`版本目录结构的主要变化是配置目录和路由定义目录独立出来,不再放入应用类库目录(并且不可更改). ~~~cmd www WEB部署目 ...
- php 助手函数,助手函数 · ThinkPHP5.1完全开发手册 · 看云
>[info] 在5.1版本中,大部分的助手函数都可以归结为一个函数`app()`,因为5.1全面采用容器管理类的实例,而`app()`函数又是容器的"管家". ## 助手函 ...
最新文章
- Closure Compiler 使用
- php中的mysql模块
- 2021北京高考一分一段成绩查询,2021北京高考总成绩一分一段表出炉
- python 运算符 (算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、位运算符、成员运算符、身份运算符、运算符优先级)(与或非)(异或)
- ubuntu18.10 cosmic更换阿里云的源
- sql 触发器_一键生成某个sql的html--记录执行计划、统计信息、触发器等
- java 解决时间相减问题
- 北大青鸟java y2_Struts-2 北大青鸟 Y2学年 项目案例使用 2框架开发租房网站 Java Develop 249万源代码下载- www.pudn.com...
- IOT(10)---NB-IOT的物联网十大典型应用场景
- allure 测试报告本地打开_Allure自动化测试报告我是这样用的
- 4.16-4.22课题(拼团系统)进度汇报
- WT2003H语音芯片在红绿灯上的运用,一款可远程更新的语音IC方案
- MPC与LQR的详细对比分析
- 展锐Camera open failure log解析程序
- 面试题(2020)微信小程序常见面试题
- Python常见问题解决办法汇总
- Vue入门(10)axios
- Solution: Cannot start Microsoft outlook. Cannot open the outlook window. Invalid xml
- python编写coc部落冲突游戏辅助(1)
- 机器人行业的信息孤岛(2020)
热门文章
- 如何使用 Mybatis 实现数据库 CURD 操作?
- 整理了Kafka的一些常用工具,建议收藏备用!| 博文精选
- kappa和lambda对比 | 程序员硬核评测
- Spark精华问答 | Spark做大规模高性能数值计算可以吗?
- oracle打patch,Oracle初学者入门指南-How to get Oracle Patch?
- tika设置文件长度限制_MySQLInnoDB某些你没注意过的限制
- 克隆需要验证_[实验技巧]CRISPR实验中如何验证编辑?
- python 水仙花_python 水仙花
- 如何快速下载CentOS7镜像
- 企业实战_17_MyCat水平扩展_跨分片查询_ER分片