Le contenu de cet article concerne l'apprentissage de Laravel : la mise en œuvre de la configuration de séparation lecture-écriture maître-esclave. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Trouvez le code suivant dans la fabrique de connexions de 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']); }
La classe d'usine effectue des opérations de lecture en obtenant aléatoirement la configuration de la base de données lue. On peut en déduire que la configuration de la base de données doit être la suivante
'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' => '', ]
Améliorée. version, prend en charge plusieurs maîtres et plusieurs esclaves, prend en charge les noms d'utilisateur et mots de passe indépendants. La configuration est la suivante :
'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' => '', ]
Vérification
Activer le journal général et le moniteur de MySQL. enregistrer les modifications via tail -f Pour déterminer si la configuration est efficace
Articles connexes recommandés :
Tests fonctionnels de Laravel : développement piloté par les tests (avec code)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!