카테고리 없음
[라라벨7] 백그라운드 잡 돌리기
rediate.will
2021. 3. 4. 10:37
이거 개념은 알겠는데 직접 짤려니 왜케 어렵징??? ㅜㅜ
그냥 큐 테이블에 던져놓고 하던일 계속 ㄱㄱ / 커널위에 스케줄러가 백그라운드로 실행.
이게 다인데 난 뭘 위해 삽질 했나.. 흙 ㅠㅠㅠㅠ
먼저 큐 테이블에 던져놓고 하던일 계속 할려면,
1. app\Jobs에서 테이블에 인서트 하는 로직이 필요함. NotifyImageApi라고 이름 지어줬당.
GoogleCloudVisionApiJob::insert([
'job_id' => $this->job_id,
'image_field' => $image->field,
'image_hash' => $image_hash,
'image_path' => $image->path,
'image_size' => $image->size,
'image_text' => null,
'created_at' => Carbon::now(),
]);
2. 그리고 코드에서 Jobs를 불러줘야한당.
$images = $job->images()->whereIn('field', ['aaa', 'bbb'])->get();
if ($images->count() > 0) {
dispatch(new NotifyImageApi($job->id));
}
이러면 큐 테이블에 던져 준거당.
그리고 커널위에 스케줄러가 백그라운드로 실행되게 해보자.
3. app\Console\Commands에서 ImageApiJobs.php를 생성하고 runService 메소드에 내용을 입력하자.
난 전 글에서 ocr예제가 들어있당!
4. 커널에 등록해주자.
$schedule->command('image-api-jobs:send')
->withoutOverlapping(2628000)
->everyMinute()
->runInBackground();
매 분마다 백그라운드에서 체크해서 돌도록 해놨당.
이러면 끝이당..
위에 1,2번은 테이블에 잘 저장되는지 확인하면 되고,
3,4 번은 실제로 데이터가 내가 기대하는대로 움직이는지 확인하면 된당!
그럼 끝!!!
분명 이해하고 넘어갔었는데; 왜 또 보는데 어렵지.......=_=