2016-08-01 64 views
0

Cron上有一些時間表,需要將他們的輸出保存在數據庫中。現在可以將其保存到文件或發送給電子郵件。有可能以某種方式將它發送到一個URL或啓動一個預先準備好的腳本? 我正在使用Laravel調度程序。這些命令類似於這個「* * * * * php/path/to/artisan schedule:run >>/dev/null 2」& 1「如何建議Cronjob將控制檯輸出重定向到url或腳本?

+0

請與你的問題更準確,我只是不明白你想做的事你有什麼,什麼...... – corentingi

回答

0

我需要得到一個laravel cron的生成輸出計劃並將其保存在數據庫中。 Laravel允許將輸出插入/追加到文件或通過電子郵件發送。 因此,解決方案是將輸出插入到文件中,然後使用after鉤子讀取該文件,最後查詢數據庫。代碼是波紋管。

class Kernel extends ConsoleKernel 
{ 
protected $commands = [ 
    Commands\ReportExpiringResponseDate::class, 
]; 

protected $outputFile = 'app/schedules.txt'; 

/** 
* Define the application's command schedule. 
* 
* @param \Illuminate\Console\Scheduling\Schedule $schedule 
* @return void 
*/ 
protected function schedule(Schedule $schedule) 
{ 
    $schedule->command('ReportExpiringResponseDate')->weekly()->mondays()->wednesdays() 
     ->sendOutputTo(storage_path($this->outputFile)) 
     ->after(function() { 
      $this->saveLogs('ReportExpiringResponseDate'); 
     }); 
} 

protected function saveLogs($scheduleName) 
{ 
    $output = File::get(storage_path($this->outputFile)); 
    $logModel = (new ScheduleLog())->newInstance(); 
    $logData = [ 
     'schedule' => $scheduleName, 
     'schedule_output' => $output 
    ]; 
    if ($logModel->validate($logData)) { 
     $logModel->fill($logData); 
     $logModel->save(); 
    } else 
     echo 'invalid data for logs'; 
} 

}

相關問題