laravel mysql if判断_laravel学习:主从读写分离配置的实现

本文介绍如何在laravel中实现mysql的主从读写分离配置,包括连接工厂的修改和加强版配置,支持多主多从及独立的数据库凭证。同时,文章提到了相关Swoole Websocket推送的内容,以及提供了BAT架构技术与面试真题的资源领取方式。
摘要由CSDN通过智能技术生成

0ab15430deceb6a5bce285abccf80088.png

本篇文章给大家带来的内容是关于laravel学习:主从读写分离配置的实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

在DB的连接工厂中找到以下代码
.../vendor/laravel/framework/src/Illuminate/Database/Connectors/ConnectionFactory.php

/** 
  * Get the read configuration for a read / write connection. 
  * 
  * @param  array  $config 
  * @return array 
  */ 
 protected function getReadConfig(array $config)  
 {  
  $readConfig = $this->getReadWriteConfig($config, 'read');  
   
  return $this->mergeReadWriteConfig($config, $readConfig);  
 }  
   
 /** 
  * Get a read / write level configuration. 
  * 
  * @param  array   $config 
  * @param  string  $type 
  * @return array 
  */ 
 protected function getReadWriteConfig(array $config, $type)  
 {  
  if (isset($config[$type][0])) {  
  return $config[$type][array_rand($config[$type])];  
  }  
   
  return $config[$type];  
 } 
  
 /**
  * Merge a configuration for a read / write connection.
  *
  * @param  array  $config
  * @param  array  $merge
  * @return array
  */
 protected function mergeReadWriteConfig(array $config, array $merge)
 {
  return array_except(array_merge($config, $merge), ['read', 'write']);
 }
 

工厂类通过随机获取读DB配置来进行读取操作,由此可推出DB的配置应该如下

'mysql' => [  
  'write' => [  
  'host' => '192.168.1.180',  
  ],  
  'read' => [  
  ['host' => '192.168.1.182'],  
  ['host' => '192.168.1.179'],  
  ],  
  'driver' => 'mysql',  
  'database' => 'database',  
  'username' => 'root',  
  'password' => '',  
  'charset' => 'utf8',  
  'collation' => 'utf8_unicode_ci',  
  'prefix' => '', 
 ]
 

加强版,支持多主多从,支持独立用户名和密码,配置如下

 'mysql' => [  
  'write' => [  
  [
  'host' => '192.168.1.180',
  'username' => '',
  'password' => '',
  ],  
  ],  
  'read' => [  
  [
  'host' => '192.168.1.182',
  'username' => '',
  'password' => '',
  ],  
  [
  'host' => '192.168.1.179',
  'username' => '',
  'password' => '',
  ],  
  ],  
  'driver' => 'mysql',  
  'database' => 'database',     
  'charset' => 'utf8',  
  'collation' => 'utf8_unicode_ci',  
  'prefix' => '', 
 ]
 

以上就是Swoole实现Websocket每秒钟主动推送的详细内容,觉得对你有帮助记得点个关注!!

小编结合以上知识体系整理了一套BAT面试真题+架构技术资料,退可提升软硬实力,进可收获高薪好offer。资料内容涵盖BAT架构技术与面试真题,减少你到处搜索资料的时间,成体系的实战技术知识,让你面试、进阶都更加容易。

领取方式:对面试文档总结感兴趣的帮可以点下面链接进入石墨文档了解大型互联网企业面试答案获取详情!

PHP进阶学习笔记、面试;文档、视频资源免费获取​shimo.im
768e75211348aa43e6dea0bad0d9962a.png

1237c3b21e0f812b779de206314ef8b5.png

09a1e01c0f784eb51a0fcaf19760c5de.png

eefde18a0c519e56bd70ba0792ce58a7.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值