前言:上一篇我们说了《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

laravel 读写分离源码解析-LMLPHP

2、看看如何创建读库和写库的链接

laravel 读写分离源码解析-LMLPHP

3、看看多个读库或者写库会选择哪个

laravel 读写分离源码解析-LMLPHP

laravel 读写分离源码解析-LMLPHP

4、总结

1,可以设置多个读库和多个写库,或者不同组合,比如一个写库两个读库
2,每次只创建一个读库链接和一个写库链接,从多个库中随机选择一个;

二、select和insert/update/delete源码解析

主要文件:Illuminate/Database/Connection.php

1、select 函数根据第三个输入参数判断使用读库还是写库

laravel 读写分离源码解析-LMLPHP

2、insert/update/delete 统一使用写库

laravel 读写分离源码解析-LMLPHP

laravel 读写分离源码解析-LMLPHP

laravel 读写分离源码解析-LMLPHP

3、总结

1,getReadPdo () 获得读库链接,getPdo () 获得写库链接。

2,select () 函数根据第三个参数判断使用读库还是写库。

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

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

05-11 11:22