Laravel 스케줄러의 배타적 제어(withoutOverlapping) 정보

1943 단어 라라벨laravel5.5

문제



어느 날 액세스 집중으로 인해 서버가 다운되는 사태에 휩쓸렸다.
그 후, 서버를 재기동해도 배치 처리가 올바르게 실행되지 않는 문제가 발생했다.
배치 처리는 Laravel 스케줄러에 의해 정기적으로 실행됩니다.

원인



구토 된 로그는

No scheduled commands are ready to run.

말하자면 스케줄러에서
다중 기동 방지 설정했습니다. (withoutOverlapping() 지정.)
// 例
$schedule->command('emails:send')->withoutOverlapping();

분명히 처리가 성공적으로 종료되지 않았기 때문에 잠금 파일이 계속 남아 있었고 이후 처리가 건너 뛰고있는 것 같습니다

대책



/storage/framework 아래에 잠금용 파일(schedule-XXXXXXXX)이 생성되었으므로 삭제했다. 글쎄, 그냥.

그 후, 일괄 처리는 건강하게 일을 재개했습니다

보충: 잠금용 파일의 파일 이름
    /**
     * Get the mutex name for the scheduled command.
     *
     * @return string
     */
    public function mutexName()
    {
        return 'framework/schedule-'.sha1($this->description);
    }

좋은 웹페이지 즐겨찾기