2017-11-27 9 views
2

laravel의 명령 및 작업 예약을 사용하여 공유 온라인 3D 프린터의 상태를 확인합니다. 아래의 코드를 사용하여 10 분마다 장치 상태를 확인하는 예약 작업을 시작합니다. 그러나 프린터가 오프라인 일 때 예약 작업을 제거하고 싶습니다.laravel sheduling 작업 제거

$schedule->command(DeviceCheckCommand::class, ['--force'])->everyTenMinutes(); 

나는 완전히 laravel doc Task Scheduling 읽었습니다,하지만 난 스케줄링 작업을 제거하는 방법에 대한 정보를 찾을 수 없습니다.

답변

2

당신은 더 나은 파일이나 데이터베이스에 프린터의 상태를 저장하고 다른 명령을 실행하기 전에 상태를 확인 :

내부 DeviceCheckCommand.php :

public function handle() 
{ 
    // Your code 

    if ($printerStatus == 'Offline') { 
     Storage::put('PrinterIsOffline.info', 'Yes'); 
    } else { 
     Storage::delete('PrinterIsOffline.info'); 
    } 
} 

내부 Kernel.php을 :

protected function schedule(Schedule $schedule) 
{ 
    if (!Storage::exists('PrinterIsOffline.info')) { 
     $schedule->command(DeviceCheckCommand::class, ['--force'])->everyTenMinutes(); 
    } 
} 
+0

아마도 내 질문에 명확하지 않습니다. 내 질문은 일정 잡기 작업을 언제 시작해야하는지에 관한 것이 아닙니다. 내 질문에 말은, 프린터가 온라인에서 오프라인으로 전환 할 때 실행중인 예약 작업을 제거하는 방법입니다. –

+1

명령은 매분마다 한 번 호출하므로 로그 시간 동안 명령을 취소하려면 DeviceCommandCheck에서 작업 중 프린터 상태를 확인해야합니다. 나는 이것이 작업 스케줄러에 전혀 반영되지 않았다고 생각한다. 이것은 프린터가 오프라인 상태 일 때 예외를 throw하는 명령의 기능입니다. – spirit