php教程_laravel学习:主从读写分离配置的实现

 所属分类:php教程

 浏览:134次-  评论: 0次-  更新时间:2022-05-27
描述:这是一篇php教程_laravel学习:主从读写分离配置的实现的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。 本篇...
这是一篇php教程_laravel学习:主从读写分离配置的实现的说明内容,如果你想学习查找类似的文章,可以进入php教程获得最新优质资料。 本篇文章给大家带来的内容是关于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学习:主从读写分离配置的实现的详细内容,更多请关注zzsucai网其它相关文章!

 标签:
积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!