当前位置: 首页 > 知识库问答 >
问题:

Laravel在长时间进程中无法确认作业

边明煦
2023-03-14

我在运行长时间队列工作时遇到问题,我目前正在使用Laravel 5.0。我曾经在数据库上对作业进行排队,对此没有问题,但我需要将其从DB中移动,所以我转到rabbitmq,所以我集成了这个包:https://github.com/vyuldashev/laravel-queue-rabbitmq/tree/v5.0

短时间工作一切都做得很好,那些需要不到3到4个薄荷糖的工作,但是我正在尝试为需要超过10个薄荷糖的工作运行一个队列监听器,问题是它们没有得到承认,它们仍然处于未包装状态,并且在16.6个薄荷糖之后正是-默认ttl-;他们移动到下一个工作,仍然没有包装。如果这个过程花了太长时间,我有时会损坏管道或连接。

我相信问题出在worker本身,而不是我正在使用的包上,下面是我尝试应用的队列侦听器的两个示例,您能否建议如何更好地使用它们,或者我可以使用哪些选项:

  • php artisan队列:侦听rabbitmq--queue=QUEUENAME--timeout=0--trys=2

共有1个答案

彭霄
2023-03-14

您可以按如下方式设置每个作业的$timeout

namespace App\Jobs;
class LongProcessJob implements ShouldQueue
{
  /**
   * The number of seconds the job can run before timing out.
   * @var int
   */
  public $timeout = 120;
}

有关更多详细信息,请参见Laravel队列。

 类似资料:
  • 我用Laravel 5.6创建了一个简单的身份验证,我试图将登录用户重定向到仪表板,如果他们转到登录页面,并将访客重定向到登录页面,如果他们转到仪表板页面。 我使用laravel默认中间件(重定向): 这是我的路线: 当登录用户尝试访问登录页面时,一切正常,他们重定向到仪表板页面。但是,当来宾尝试访问登录页面时,页面出错:页面没有正确重定向 我到底做错了什么?

  • 我正在将L5.1.x中的现有项目迁移到运行server 2012和SQL server 2012的新服务器。 我在使用表的时间戳()字段时遇到了一些问题。当生病时,在我的计划中添加: 我将得到created_at和updated_at类型为"datetime"的列。 但是,当我尝试将模型添加到这个数据库时,新的配置总是出现错误: 当我禁用模型中的时间戳字段时,一切正常: .. 但当然,在创建时和更

  • 问题内容: 场景 某些SQL Agent Jobs计划在一天中每隔几分钟运行一次。 在某些情况下,它会丢失其下一个计划,因为它仍在按上一个计划运行。 每隔一段时间,一项工作可能会“挂起”。这不会产生故障(因为作业尚未停止)。发生这种情况时,可以手动停止该作业,并在下次运行时正常运行。它旨在从停下来的地方重新取回。 最有效的方法是什么? 我想要一种确定名为“ JobX”的SQL代理作业当前正在运行多

  • 我在20分钟前问过这个问题,但当我插入代码时,站点需要很长时间才能加载。10分钟后,我收到以下错误消息: 使用以下代码:

  • 问题内容: 在我们的Web应用程序中,用户可以进行需要大量数据库表进行更新的更改。所有内容的加载时间最长为30秒。我不希望用户在导航到另一个页面之前等待其完成。 我将长时间运行的代码放在自己的页面上(例如,“ updateinfo.aspx”),并尝试了一些解决方案,包括jQuery AJAX调用“ updateinfo.aspx”或加载调用“ updateinfo.aspx”的图像文件。在所有情