laravel 读写分离源码解析
前言:上一篇我们说了《laravel 配置MySQL读写分离》,这次我们说下,laravel的底层代码是怎样实现读写分离的。
一、实现原理
说明:
1、根据 database.php 配置,创建写库和读库的链接 connection
2、调用 select 时先判断使用读库还是写库,而 insert/update/delete 统一使用写库
主要文件:Illuminate/Database/Connectors/ConnectionFactory.php
1、判断 database.php 是否配置了读写分离数据库
文件:Illuminate/Database/Connectors/ConnectionFactory.php
2、看看如何创建读库和写库的链接
3、看看多个读库或者写库会选择哪个
4、总结
1,可以设置多个读库和多个写库,或者不同组合,比如一个写库两个读库
2,每次只创建一个读库链接和一个写库链接,从多个库中随机选择一个;
二、select和insert/update/delete源码解析
主要文件:Illuminate/Database/Connection.php
1、select 函数根据第三个输入参数判断使用读库还是写库
2、insert/update/delete 统一使用写库
3、总结
1,getReadPdo () 获得读库链接,getPdo () 获得写库链接。
2,select () 函数根据第三个参数判断使用读库还是写库。
以上就是本篇文章的全部了,结束。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现