2017-10-11 1 views
0

Laravel 5 응용 프로그램이 다운 (계획된 유지 관리 또는 다른 경우)되었지만 몇 분 후에 다시 복원되면 Laravel이 놓친 누락 된 작업을 자동으로 파악하여 실행합니까?유지 보수/가동 중지 시간에 놓친 Laravel 작업을 따라 잡기위한 적절한 방법은 무엇입니까?

그렇지 않은 경우 잠재적으로 누락 된 작업에 대한 캐치 업을 처리하는 기본 방법은 무엇입니까?

+0

실패한 작업 만 재실행 할 수 있습니다. 나는 네가 파견 할 예정인 일을 의미한다. – C2486

+0

작업을 다시 실행하지 않으려는 경우 - 다음에 환경을 백업 할 때 시스템이 실행되지 않아야하는 작업이 있어야합니다. –

+0

또한 예약 된 작업에 데이터를 가져 오는 것과 같은 쿼리 조건에 따라 달라지며 두 번째 조건이 작동하면'today' 또는'> lastTaskDone'입니다. – C2486

답변

0

작업 스케줄링 시스템이 너무 간단해서 작업이 가동 중지 시간 이후에 실행되는 것을 방지 할 수 없습니다 (예 : 매일 또는 특정 시간에 실행되는 경우). 광고 된대로 문자 그대로 주어진 일정에 따라 작업을 실행합니다.

기본적으로 가동 중지 시간/유지 관리를 통해 "버스를 놓칠"수 있습니다.

은 보장하기 위해 그 중요한 작업 실행 :

  • 이 중요한 작업이 마지막으로 실행
  • 대신 스케줄 시스템에서 직접 중요한 작업을 실행했다 때 정보를 저장하기위한 모델/메커니즘을 추가 작업에서 그들을 포장 (들)을 자주 실행하는 실제 작업이 마지막으로 실행 된 경우 확인하고 여기에 적절한
    • 기본 논리가있는 경우 다음을 전달합니다 :
      • if (time() > ($task->lastRunTime + $task->intervalTime)) dispatch(...) 또는;
      • if (time() >= $task->nextRunTime) dispatch(...)
    • 응용 프로그램을 기반으로

, 이것의 구체적인 구현이 달라집니다; 모델을 사용하는 것이 좋은 점은 메트릭 추적과 같이 애플리케이션의 요구 사항에 쉽게 적용 할 수 있다는 것입니다.

관련 문제