0
我解析一些HTML頁面和API端點,例如,每5分鐘跟蹤更改。爲此,我創建了ParseJob,用於解析並保存對數據庫的更改。 ParseJob實現了接口ShouldQueue,並且我已經將隊列驅動程序更改爲Redis。爲了定期運行ParseJob,我已經創建ParseCommand並把它添加到時間表:Laravel Jobs過期
class ParseCommand extends Command
{
protected $signature = 'application:my-parse-command';
public function handle()
{
$this->dispatch(new ParseJob());
}
}
class Kernel extends ConsoleKernel
{
protected $commands = [
Commands\ParseCommand::class
];
protected function schedule(Schedule $schedule)
{
$schedule->command('application:my-parse-command')
->everyFiveMinutes();
}
}
和隊列工人開始作爲一個守護進程來處理隊列。所以,每5分鐘ParseJob被推送到隊列中,隊列工作人員正在處理作業。
有時隊列工作進程崩潰,死機或其他原因不起作用。但是,每5分鐘一次的工作都會被推入隊列中。在停機一小時後,我在隊列中有12個工作,但那段時間無關緊要,因爲我不需要在某個時間解析12次,我只需要一個解析工作。
所以我想爲Redis中的expire命令起作用的作業設置TTL。怎麼做?或者,也許你有另一種解決方案?