>  기사  >  PHP 프레임워크  >  laravel 학습: 마스터-슬레이브 읽기-쓰기 분리 구성 구현

laravel 학습: 마스터-슬레이브 읽기-쓰기 분리 구성 구현

不言
不言원래의
2018-08-08 16:16:243340검색

이 글의 내용은 라라벨 학습: 마스터-슬레이브 읽기-쓰기 분리 구성에 관한 것입니다. 이는 특정 참고 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

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'    => '', 
]

Enhanced 버전, 다중 마스터와 다중 슬레이브를 지원하며 독립적인 사용자 이름과 비밀번호를 지원합니다. 구성은 다음과 같습니다

'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의 일반 로그를 열고 tail -f를 사용하여 로그 변경 사항을 모니터링하여 구성이 효과적인지 확인하세요.

권장 관련 기사:

Laravel의 기능 테스트: 테스트 중심 개발(코드 포함)

위 내용은 laravel 학습: 마스터-슬레이브 읽기-쓰기 분리 구성 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.