[英]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.