我的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行就写回一个状态表。问题是当一个无缓冲的查询正在运行时,你不能写回MYSQL直到它完成。
所以我需要做的是让上面的这个无缓冲的查询运行一个新的连接,但运行到与应用程序使用的数据库相同的数据库。
有可能吗?如何在不关闭现有连接的情况下将Laravel中的新连接启动到应用程序已使用的同一数据库?
答案 0 :(得分:0)
在应用程序配置中,使用与主数据库相同的数据库连接详细信息创建一个新的数据库连接,并将其称为不同的内容。
然后在代码中你可以使用第二个连接:
$pdo = DB::connection('connection 2 name here')->getPdo();
如果尚未打开,则会打开新连接。