繁体   English   中英

如何将排队的作业与Laravel中的特定用户相关联?

[英]How can I associate a queued job with a particular user in Laravel?

我建立了一个基于Laravel的系统,用户可以开始执行“任务”,该任务重复多次,每次重复之间都有延迟。 我已经通过给一个带有amount参数的作业排队来完成此任务,然后将其递归地排队另一个作业,直到计数增加为止。

例如,我以3次重复开始我的任务:

  1. 作业以amount参数3进入队列。运行后,数量递减为2。同一作业以指定的5秒延迟再次进入队列。
  2. 如果工作重新运行时,过程重复与amount的1。
  3. 最后一个作业将执行,现在amount已达到0,不会再次排队并且任务已完成。

这按预期工作,但我需要知道用户当前是否正在处理任何任务。 我需要能够执行以下操作:

  1. 检查特定队列是否有特定用户启动的任何作业。
  2. 检查是为设置的值amount上工作。

我正在将database驱动程序用于名为tasks的队列。 在这里有没有现成的方法可以实现我的目标?

谢谢!

您不应该使用延迟一遍又一遍地重复同一作业的多个重复。 该功能适用​​于重试失败的网络请求之类的事情。 如果计数太高,一次将多个队列中的作业连续几个小时会导致队列出现内存问题。

我建议您使用php artisan schedule:run功能每1-5分钟运行一次命令,以检查是否需要运行用户作业。 如果是这样,请启动该作业,然后向用户表(或要跟踪这些表的任何表)添加状态标志。 完成后,将同一行标记为已完成,然后等待cron下一次运行以再次执行该操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM