Laravel 4.2 打开与主数据库的第二个数据库连接
Laravel 4.2 open a second database connection to the main database
我的 laravel 应用程序有一个数据库,但由于以下原因,我需要在 Laravel 中打开两个到它的连接。
我有这个代码:
$pdo = DB::connection()->getPdo();
$pdo->setAttribute( PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false );
$query = $pdo->query( "SOME QUERY PULLING MILLIONS OF ROWS" );
while ( $row = $query->fetch( PDO::FETCH_ASSOC ) ) {
// Some function that writes the result to file
// and updates a row in a table to keep track of the process
}
我正在使用无缓冲查询,因为我没有足够的内存来将整个结果集准备到内存中,我们在这里讨论的是数百万行。但是我需要跟踪已经处理了多少行,所以我有一个函数,每处理 10K 行就会写回状态 table。问题是当一个无缓冲的查询是 运行ning 你不能写回 MYSQL 直到它完成。
所以我需要做的是在 运行 上面创建这个无缓冲查询,它是一个新连接,但与应用程序正在使用的数据库相同。
所以有可能吗?如何在不关闭现有连接的情况下,在 Laravel 中启动与应用程序已在使用的相同数据库的新连接?
在应用程序配置中,使用与主数据库相同的数据库连接详细信息创建一个新的数据库连接,并将其命名为不同的名称。
然后在代码中你可以像这样使用第二个连接:
$pdo = DB::connection('connection 2 name here')->getPdo();
这将打开一个新连接(如果尚未打开)。
我的 laravel 应用程序有一个数据库,但由于以下原因,我需要在 Laravel 中打开两个到它的连接。
我有这个代码:
$pdo = DB::connection()->getPdo();
$pdo->setAttribute( PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false );
$query = $pdo->query( "SOME QUERY PULLING MILLIONS OF ROWS" );
while ( $row = $query->fetch( PDO::FETCH_ASSOC ) ) {
// Some function that writes the result to file
// and updates a row in a table to keep track of the process
}
我正在使用无缓冲查询,因为我没有足够的内存来将整个结果集准备到内存中,我们在这里讨论的是数百万行。但是我需要跟踪已经处理了多少行,所以我有一个函数,每处理 10K 行就会写回状态 table。问题是当一个无缓冲的查询是 运行ning 你不能写回 MYSQL 直到它完成。
所以我需要做的是在 运行 上面创建这个无缓冲查询,它是一个新连接,但与应用程序正在使用的数据库相同。
所以有可能吗?如何在不关闭现有连接的情况下,在 Laravel 中启动与应用程序已在使用的相同数据库的新连接?
在应用程序配置中,使用与主数据库相同的数据库连接详细信息创建一个新的数据库连接,并将其命名为不同的名称。
然后在代码中你可以像这样使用第二个连接:
$pdo = DB::connection('connection 2 name here')->getPdo();
这将打开一个新连接(如果尚未打开)。