概要
laravelにて画面上からのボタンクリックトリガーで自作のcommandを実行する方法をまとめる。
前提
下記の内容が完了していること。
DBにjobsテーブルがあること
方法
-
.envのQUEUE_CONNECTIONをdatabaseに設定(configのキャッシュクリア
$ php artisan config:clear
を実行した方が良い) -
下記コマンドを実行してジョブを作成
php artisan make:job EchoHelloWorldCommandJob
-
作成されたジョブ
app/Jobs/EchoHelloWorldCommandJob.php
を開き下記のように記載app/Jobs/EchoHelloWorldCommandJob.php<?php namespace App\Jobs; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Queue\Queueable; use Illuminate\Support\Facades\Artisan; class EchoHelloWorldCommandJob implements ShouldQueue { use Queueable; /** * 実行するコマンド名 * * @var string */ protected $command; /** * Create a new job instance. */ public function __construct() { $this->command = 'app:echo-hello-world-command'; } /** * Execute the job. */ public function handle(): void { Artisan::call($this->command); } }
-
ワーカーの起動
php artisan queue:work
-
トリガーとなる処理の後に下記の1行を追加
use App\Jobs\EchoHelloWorldCommandJob; EchoHelloWorldCommandJob::dispatch();
-
後は処理を実行するだけ