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

互联网 18-8-8
本篇文章给大家带来的内容是关于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的功能测试:测试驱动开发(附代码)

以上就是laravel学习:主从读写分离配置的实现的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: laravel学习
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Laravel的功能测试:测试驱动开发(附代码)

相关资讯