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']); }
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' => '', ]
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' => '', ]
Ü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!