gpt4 book ai didi

php - Laravel 4 - 镜像数据库?

转载 作者:行者123 更新时间:2023-11-29 20:02:09 25 4
gpt4 key购买 nike

我们已经创建了镜像数据库,它是我们应用程序主数据库的副本。目标是在两个数据库不可用时在两个数据库之间跳转。

我想知道如何在 Laravel 4 中实现这样的事情?可以说我有

 'mysql' => array(
'driver' => 'mysql',
'host' => '172.22.22.22',
'port' => '3306',
'database' => 'db',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

'mysql' => array(
'driver' => 'mysql',
'host' => '172.22.22.23',
'port' => '3306',
'database' => 'db',
'username' => 'username',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

基本上不同的主机,但相同的凭据。如果其中一个数据库不可用,如何配置这些数据库之间的切换?任何来源或文档将不胜感激。

最佳答案

您可以编写一个辅助函数,根据连接与否来设置连接。我会这样做的方式是这样的:

配置文件:

  # Our primary database connection
'mysql' => array(
'driver' => 'mysql',
'host' => 'host1',
'database' => 'database1',
'username' => 'user1',
'password' => 'pass1'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

# Our secondary database connection
'mysql2' => array(
'driver' => 'mysql',
'host' => 'host2',
'database' => 'database2',
'username' => 'user2',
'password' => 'pass2'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

辅助函数文件:

function db($modelName){
try {
//Get underlaying PDO connection.
DB::connection()->getPdo();
$m = new $modelName;
$m->setConnection('mysql');
}
catch(\Exception $e)
{
$m = new $modelName;
$m->setConnection('mysql2');
}
}

然后在每个模型文件中设置:

protected $connection = HelperClass::db('mymodelname');

我确实认为像这样的某种方法会起作用。

关于php - Laravel 4 - 镜像数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40486223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com