質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

1033閲覧

Laravel5.4でqueueで処理が実行されない。

do_slice

総合スコア26

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/11/18 15:54

LaravelのQueueについて質問させてください。

Laravel5.4で画像の返還とアップロードを非同期処理にするために、
Controllerで受け付けたあとjobにこのような形で処理を移動しています。

PHP

1//controllerの記載 2 3public function uploadPicture(Request $request, $id) 4 { 5 6 $file = $request->file('file'); 7 $name = md5(sha1(uniqid(mt_rand(), true))).'.'.$file->getClientOriginalExtension(); 8 9 $file->move('/tmp/', $original_name); 10 11 //変数をセットするなどの処理 12 13 $this->dispatch(new ResizeUploadImage($width, $height, $name, $mini_name)); 14 15 return redirect() 16 ->action('BoardController@show', [$id, 'service' => $service,])->with('success', 'トップ画像が更新されました。'); 17}

キューの処理はdatabaseで行なっていて
php artisan queue:table
php artisan migrate
を実行しjob tableもできています。

config/queue.phpは下記の通りセットしています。

'default' => env('QUEUE_DRIVER', 'database'), 'connections' => [ 'database' => [ 'connection' => 'mysql', 'driver' => 'database', 'table' => 'jobs', 'queue' => 'default', 'expire' => 60, ], ]

PHP

1 //app/jobs/ResizeUploadImage 2 3//以下を追記 4use Intervention\Image\Facades\Image; 5use File; 6use Storage; 7 8 9 public function __construct($width, $height, $name, $mini_name) 10 { 11 $this->width = $width; 12 $this->height = $height; 13 $this->name = $name; 14 $this->mini_name = $mini_name; 15 } 16 17 18 public function handle() 19 { 20 //from here to job/ResizeUploadImage 21 22 $point = round((($width/2)-($height/2)), 0, PHP_ROUND_HALF_DOWN); 23 24 Image::make('/tmp/'.$original_name) 25 ->crop($height, $height, $point, 0) 26 ->resize(250, 250) 27 ->save('/tmp/'.$mini_name); 28 29 //upload mini size 30 $s3 = Storage::disk('s3'); 31 $filePath_mini = 'photos/mini/' . $name; 32 $s3->put($filePath_mini, file_get_contents('/tmp/'.$mini_name), 'public'); 33 34 File::delete('/tmp/'.$mini_name); 35 36 //untile here to job/ResizeUploadImage // 37 } 38}

というコードになっていて、
実行するとJobテーブルにレコードも入っています。

しかし
php artisan queue:work
でワーカを起動して処理をしようとすると、
[2017-11-18 23:29:45] Processing: App\Jobs\ResizeUploadImage

というログがターミナルにずっと出続けて一向に処理はされません。

コードの内容、設定で何か問題がありますでしょうか。
ご教示いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Jobテーブルにキューが貯まるまで動いているのであれば、設定などは大方うまくいっているかと思うので、
ResizeUploadImageのhandle処理を、以下のようなシンプルなものにしてログが吐かれるか確認するとどうでしょうか

logger("test");

また動作確認であれば、「php artisan queue:listen」を試してみても良いかもしれません。
Laravel 5.5 キュー
Homesteadであれば、キューシステムに導入済みのRedisを設定して動くかを試しても手がかりになるかもしれません。

投稿2017/11/19 22:48

aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

do_slice

2017/11/20 01:38

aro10さん、いつもありがとうございます。 php artisan queue:listen と workにデーモンオプションつけたものは挙動が変わらなかったので、 queueに渡してる処理の問題かもしれません。 いただいた回答を参考にシンプルなものでテストしてみますm( )m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問