2017-11-27 15 views
2

laravelのコマンドとタスクスケジューリングを使用して共有オンライン3Dプリンタの状態を確認します。以下のコードを使用して、スケジューリングタスクを開始して10分ごとにデバイスステータスを確認します。しかし、プリンタがオフラインのときにスケジューリングタスクを削除したい。laravel shedulingタスクを削除する

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

私は完全にlaravel doc Task Schedulingを読んだが、私は、スケジューリングタスクを削除する方法についての情報を見つけることができません。

答えて

2

あなたはより良いファイルやデータベースにプリンタの状態を保存し、別のコマンドを実行する前の状態を確認してください:

インサイドDeviceCheckCommand.php:Kernel.phpインサイド

public function handle() 
{ 
    // Your code 

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

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

多分私の質問は明確ではありません。私の質問は、いつスケジューリングタスクを開始するかについてではありません。私の質問では、私は、プリンタがオンラインからオフラインに切り替わるとき、実行中のスケジューリングタスクを削除する方法を意味します。 –

+1

コマンドは毎分1回呼び出されます。そのため、ログ時にコマンドをキャンセルする場合は、DeviceCommandCheck内の操作中にプリンタの状態を確認する必要があります。私は、これはタスクスケジューラにまったく反映されていないと思う。これは、プリンタがオフラインの場合に例外をスローするコマンドの機能です。 – spirit

関連する問題