私のlaravelアプリケーション用のデータベースは1つありますが、次の理由により、Laravelで2つの接続を開く必要があります。
私はこのコードを持っています:
$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 でアプリケーションが既に使用している同じデータベースに新しい接続をスピンアップするにはどうすればよいですか?