在laravel队列中获取特定作业之前的作业数

时间:2017-09-20 09:31:10

标签: laravel laravel-5 queue jobs beanstalkd

我在服务器上为用户提供了计算服务的时间。我将这些计算工作放在作业队列中。所以我需要显示等待用户的作业数量。虽然我找不到一种方法来获得laravel队列中特定工作之前的工作量。我使用beanstalkd作为队列。

1 个答案:

答案 0 :(得分:1)

与“How can I get a list of all jobs in a beanstalk tube?”答案一样, Beanstalkd不是数组。它不是为了搜索或计算而设计的,只是为了让下一个工作继续工作。

如果您想查看队列中有多少个作业,以及它们在订单中的位置,请在其他地方,另一个数据存储区中记录 - 例如Redis或memcached。将作业放入队列时创建一个条目,并在从Beanstalkd删除作业时将其删除。注意 - 此“订单”或“序列”仅在所有作业具有相同优先级时有效,并且您使两个系统保持完美同步。

您可以更合理地做的一些事情是计算队列中的作业总数(或特定的管/队列),如果作业在他们应该花费的时间上大致相似,请提供估计在新工作(或刚刚投入的新工作)到完成之前需要多长时间。

您可以帮助计算具有createdAt时间的特殊作业的ETA,并且当它运行时,它会将队列中的时间(now-createdTime)更新为外部存储。