gpt4 book ai didi

php - Laravel队列继续为作业处理多次

转载 作者:行者123 更新时间:2023-12-02 11:23:43 25 4
gpt4 key购买 nike

下面是当我运行php artisan队列时发生的情况:监听并且在我的工作表上只有一份工作

enter image description here

这是我的代码:

public function handle(Xero $xero)
{
$this->getAndCreateXeroSnapshotID();
$this->importInvoices($xero);
$this->importBankTransaction($xero);
$this->importBankStatement($xero);
$this->importBalanceSheet($xero);
$this->importProfitAndLoss($xero);

}

最佳答案

为了使作业离开队列,它必须到达handle函数的末尾-没有错误和异常。

您的一个或多个功能内部一定有问题。

If an exception is thrown while the job is being processed, the job will automatically be released back onto the queue so it may be attempted again. https://laravel.com/docs/5.8/queues



可以实现相同的行为
$this->release()

如果您不知道发生了什么,可以将作业设置为仅运行一次。如果抛出错误,则该作业将被视为失败,并将被放入失败的作业队列中。

The maximum number of attempts is defined by the --tries switch used on the queue:work Artisan command. https://laravel.com/docs/5.8/queues


php artisan queue:work --tries=1

如果您使用的是数据库队列,(非常调试)运行此命令以创建失败的队列表
php artisan queue:failed

最后,找出您的代码出了什么问题。您可以捕获并记录错误。
public function handle(Xero $xero)
{
try{
$this->getAndCreateXeroSnapshotID();
$this->importInvoices($xero);
$this->importBankTransaction($xero);
$this->importBankStatement($xero);
$this->importBalanceSheet($xero);
$this->importProfitAndLoss($xero);
}catch(\Exception $e){
Log::error($e->getMessage());
}
}

您还可以将错误日志 channel 设置为松弛,错误或其他错误。只要确保检查一下即可。请不要生气,在处理laravel队列时通常会搞砸。你觉得我怎么来的?

关于php - Laravel队列继续为作业处理多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48923855/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com