以下を参考にバックグラウンドでコマンドを実行したいですがうまくいきません。
どなたか教えて頂いてもいいでしょうか?
Console/Commands/createZip.php
コマンドはここにzipを作成するコマンドを登録しました。
PHP
1/** 2 * The name and signature of the console command. 3 * 4 * @var string 5 */ 6protected $signature = 'create:zip {ids} {--queue=}'; 7 8/** 9 * Execute the console command. 10 * 11 * @return mixed 12 */ 13public function handle() 14{ 15 // idの配列からzipを作成 16 $this->createZip($this->argument('ids')); 17}
コマンドはソースから以下のように呼び出して実行されるのは確認できました。
PHP
1 2Artisan::queue('create:zip ', [ 3 'ids' => $ids, 4 '--queue' => 'default' 5]); 6
config/queue.php
ここの設定はデフォルトのままです。
'connections' => [ 'sync' => [ 'driver' => 'sync', ], 'database' => [ 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'retry_after' => 90, ],
MySQLを使いたかったので以下jobsテーブルとfailed_jobsテーブルを作成しました。
$ php artisan queue:table $ php artisan queue:failed-table $ php artisan migrate
キューワーカを以下のコマンドを叩けばいけると思いましたが、createZipが終わらないと次のコードが実行されないようです。
$ php artisan queue:work
Artisanファサードのqueueメソッドを使用すると、キューワーカーによりバックグラウンドでArtisanコマンドが実行されるようにキューされます。このメソッドを使用する前に、キューの設定を確実に済ませ、キューリスナを実行してください。
https://readouble.com/laravel/5.4/ja/artisan.html
このように書いてあったので、キューの設定をしてキューリスナを実行したいのですが、他に何をやればいいのでしょうか?
根本的に違っていたら教えてください。
環境は以下です。
Laravel5.4 PHP7.1 Mysql5.7
長文失礼しました。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/18 13:29