mysql - Laravel 4.2はメインデータベースへの2番目のデータベース接続を開きます

原文 mysql database laravel pdo unbuffered-queries

私の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で、アプリケーションがすでに使用しているのと同じデータベースへの新しい接続を、既存の接続を閉じずに起動するにはどうすればよいですか?
答え
アプリケーション構成で、メインデータベースと同じデータベース接続の詳細で新しいデータベース接続を作成し、別の名前を付けます。

次に、コードで次のように2番目の接続を使用できます。

$pdo = DB::connection('connection 2 name here')->getPdo();


まだ開いていない場合は、新しい接続が開かれます。
関連記事

php - MySQLは私の合計スコアをランク付けします

php - 影響を受ける行が機能しない-Codeigniter

mysql - 名前がわずかに異なる場合、mysql行を名前でマージする

php - utf8 phpMyAdminによるロシア語のエンコード

php - iPhoneアプリの「証明書が無効です」エラー

javascript - 同じページのカラーボックスに値を渡す

mysql - MySQL 5.5からPercona 5.6への移行戦略

java - Tomcat 8 + MySQL + Spring + JPA-接続URL 'null'のクラス ''のJDBCドライバーを作成できません

php - phplistデータベースへのユーザーの追加

php - Laravelの移行は外部キーを爆破します。すでにunsigned intを使用し、作成されたテーブルを参照しています