前言:上一篇我们说了《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 () 函数根据第三个参数判断使用读库还是写库。
以上就是本篇文章的全部了,结束。