Laravel
[Laravel] 비동기 Job Queue 실행하기
먹세
2022. 2. 15. 19:07
1. app/Jobs 안에 Job을 생성 후 전달될 파라미터 세팅
php artisan make:job MyJob
app/Jobs/MyJob.php ==
비동기 작업은 ShouldQueue 가 담당한다.
<?php
namespace App\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Support\Facades\Log;
class MyJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $data;
/**
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Execute the job.
*
* @return void
*/
public function handle()
{
Log::info('queue test!! : '.$this->data->id);
}
}
2. Job을 실행할 곳에서 dispatch 작성
use App\Jobs\MyJob;
MyJob::dispatch($data);
3. Job을 수정하면 코스코드가 바로 적용되지 않는다.
수정한 소스코드를 적용시키기 위해서는
php artisan queue:restart
위 명령어를 실행하게되면 worker 서버가 종료된다.
다시 queue가 동작하게 하려면 수동으로 worker 서버를 재실행 시켜주거나,
queue:restart 를 하지않고 그냥 worker 서버만 재시작 해주면 소스코드가 반영된다.
혹은 Supervisor와 같은 프로세스매니저를 설치해서 운용하면 된다.
https://laravel.kr/docs/5.4/queues#supervisor-configuration
끝.
실행 후 로그 확인.
반응형