[英]Too Many Connections w/ Laravel 4 and MySQL
我有一个关于在Laravel 4.1中处理多个DB连接的问题。 假设我在该主机上有一个带有3个DB的数据库主机
例如:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_1',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'mysql2' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_2',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
'mysql3' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'DB_3',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
我应该与这些数据库建立3个不同的连接吗?
或者我应该只有一个连接,并在每个模型中指定表名称,如:
public $table = "DB_2.table_name";
我问的原因是,我注意到我更容易耗尽数据库连接,因为它在需要连接到不同数据库时创建新的数据库连接。
我知道两者都有效,但我对在这种情况下被认为是“最佳实践”感兴趣。
提前感谢您的反馈。
干杯。
指定表,而不是数据库实现。
我不是“功能”的忠实粉丝,它允许在同一服务器上的DB之间跨MySQL查询MySQL。 这就是你所提到的东西。
table_name_test
这样的测试数据库来测试您的代码或数据库修改,那么每次在db和只编辑配置文件之间跳转时,您都必须修改代码中的所有表名。 select * from db1.foo f Join db2.bar b on b.id = f.id;
。 恭喜你刚刚将你的2个dbs变成了一个可能无法在MySQL之外运行的大型数据库 此外,即使您指定了三个连接,您可能也没有建立连接并同时使用所有三个连接...我希望。 如果你确实使用了每个请求的所有3个连接laravel app / site节省2个连接可能是微优化。
当我需要时,这段代码为我提供了诀窍。
Config::set('database.default', 'database_name');
在您的情况下,将database_name替换为您可能需要的database_name 。 每次看到需要进行切换时,我都会在控制器中调用它。 在查询之前,例如。
我不知道是否是最好的方式 ,但它对我有用,我认为值得分享! = d
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.