laravel学习:主从读写分离配置的实现

本篇文章给大家带来的内容是关于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'    => '',  ]

验证
开启MySQL的general-log,通过tail -f的方式监控log变化来确定配置是否生效

相关文章推荐:

Laravel的功能测试:测试驱动开发(附代码)

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享