Laravel 5.1では、config/queue.php
でキュー接続構成を設定できます。
QUEUE_DRIVER=database
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
ただし、config/database.php
のデフォルトのデータベース接続のみを使用します。
2つのデータベース、ローカルホストに1つのデフォルトデータベースmysql1
、リモートサーバーに1つのデータベースmysql2
があり、キューjobs
テーブルがリモートデータベースmysql2
にある場合、リモートmysql2
データベースを使用するようにキューデータベースドライバーを構成するにはどうすればよいですか?メインアプリはローカルホストのデフォルトデータベースを使用していることに注意してください。
'connection'
のqueue.php
パラメーターを使用して、(database.php
で定義したものから)正しいデータベース接続を設定できます。
'database' => [
'connection' => 'mysql2',
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'expire' => 60,
],
私は同じものを探していて、ソースコードでそれを見つけました。
注:これにより、この接続からジョブが読み取られるだけでなく(キューを実行している場合)、この接続にジョブが書き込まれます(新しいジョブをディスパッチする場合)。
ここでのベストアンサーは私にとってはうまくいきませんでした。私のものとは別の問題に対するベストアンサーではないことは言うまでもありません。私の問題は、Laravelが私の設定設定をキャッシュしなかったということでした。
ファイル\ config\queue.phpに移動し、デフォルトのドライバーを変更した後...
'default' => env('QUEUE_DRIVER', 'database'),
キューはまだ同期ドライバーで実行されていました。
次に、ファイルを確認しました...
\bootstrap\cache\config.php
30行目あたりでこれを見ました...
'queue' =>
array (
'default' => 'sync',
...しかし、データベースに接続するには、次のようにする必要があります...
'queue' =>
array (
'default' => 'database',
これで問題は解決しました...
php artisan config:cache
Config:cacheコマンドを実行すると、config.phpファイルが現在のドライバー設定に書き換えられます。
モデルに$connection
変数を設定できます。これはEloquent
クエリにのみ影響し、Fluid QueryBuilderでは機能しないことに注意してください。
class Jobs extends Eloquent {
protected $connection = "database2"
}
もちろん、これには、config/database.php
である'database2' => [...]
ファイルに2番目のnamed
接続が必要です。