Php 更新和重新计算长期运行的Laravel作业

Php 更新和重新计算长期运行的Laravel作业,php,laravel,laravel-5,queue,laravel-5.4,Php,Laravel,Laravel 5,Queue,Laravel 5.4,我有一些Laravel工作需要等待很长时间(15-60秒),第三方API才能完成任务,然后才能继续。在线程轮询作业以完成时,将其锁定感觉非常浪费 是否有方法更新作业的有效负载/状态并重新对其进行查询,以便在其他几个作业完成后,作业可以继续并再次轮询 我的想法是: // In a handling method within the job. $this->state = 'waitingForSomeTask'; // Save the payload / state of this

我有一些Laravel工作需要等待很长时间(15-60秒),第三方API才能完成任务,然后才能继续。在线程轮询作业以完成时,将其锁定感觉非常浪费

是否有方法更新作业的有效负载/状态并重新对其进行查询,以便在其他几个作业完成后,作业可以继续并再次轮询


我的想法是:

// In a handling method within the job.
$this->state = 'waitingForSomeTask';

// Save the payload / state of this job (this is the "missing" method)
$this->save();

// Put the task back on the queue with a five second delay
$this->release(5);
从这里开始,下一次作业处理程序运行时,它可能会在停止的地方重新开始(作业变量已结转)-检查任务是否完成,如果完成,则继续;如果没有,它只会重新获得工作



我没有在官方文件或其他地方看到这一点,所以有没有更好/更“拉雷维尔式”的方法来做到这一点?

如果可以,请提供更多详细信息,关于作业如何工作,它们之间的关系如何等,我想到的只是将作业发送到队列,然后在第一份工作的末尾加上第二份工作等等。@AchrafKhouadja这也是我的想法——只是把工作分解成更小的任务。这就是说,这些作业通常都很小,而且很切题,例如AWS上的CRUD操作或计费操作——只需几个步骤即可完成。有些是用户发起的,有些是计划的。唯一复杂的因素是,在第三方api上完成特定任务需要很长的等待时间。您应该尝试将其分解为较小的任务,并为那些需要外部api/服务才能完成某项任务的任务定义Webhook。如果可以,请提供更多详细信息,如作业如何工作,它们之间的关系如何等,我想到的只是将一个作业发送到队列中,然后在第一个作业的末尾添加第二个作业,等等。@AchrafKhouadja这也是我的想法——只是将作业分解成更小的任务。这就是说,这些作业通常都很小,而且很切题,例如AWS上的CRUD操作或计费操作——只需几个步骤即可完成。有些是用户发起的,有些是计划的。唯一复杂的因素是在第三方api上完成特定任务需要很长的等待时间。您应该尝试将其分解为较小的任务,并为那些需要外部api/服务来完成某项任务的任务定义Webhook。