Heim > PHP-Framework > Laravel > Hauptteil

Laravel-Lernen: Implementierung der Konfiguration der Master-Slave-Lese-/Schreibtrennung

不言
Freigeben: 2018-08-08 16:16:24
Original
3279 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit dem Laravel-Lernen: Die Implementierung der Master-Slave-Lese-Schreib-Trennung hat einen gewissen Referenzwert. Ich hoffe, dass er für Sie hilfreich ist.

Finden Sie den folgenden Code in der Verbindungsfabrik von 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']);
}
Nach dem Login kopieren

Die Factory-Klasse führt Lesevorgänge durch, indem sie die gelesene DB-Konfiguration zufällig abruft. Daraus lässt sich ableiten, dass die DB-Konfiguration wie folgt aussehen sollte

'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'    => '', 
]
Nach dem Login kopieren

Erweiterte Version , unterstützt mehrere Master und mehrere Slaves, unterstützt unabhängige Benutzernamen und Passwörter, die Konfiguration ist wie folgt

'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'    => '', 
]
Nach dem Login kopieren

Überprüfung
Aktivieren Sie das allgemeine Protokoll von MySQL und überwachen Sie es Das Protokoll ändert sich durch tail -f, um festzustellen, ob die Konfiguration wirksam ist

Empfohlene verwandte Artikel:

Funktionstests von Laravel: Testgetriebene Entwicklung (mit Code)

Das obige ist der detaillierte Inhalt vonLaravel-Lernen: Implementierung der Konfiguration der Master-Slave-Lese-/Schreibtrennung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!