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 () 函数根据第三个参数判断使用读库还是写库。

 

以上就是本篇文章的全部了,结束。

 

参考链接:https://learnku.com/laravel/t/1879/laravel-5-configuration-read-and-write-separation-and-source-analysis

posted @   陈浩宇人呢  阅读(1076)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示