【发布时间】:2017-09-20 09:31:09
【问题描述】:
我在我的服务器上为用户提供了一些时间成本计算服务。我将这些计算工作放在作业队列中。所以我需要显示有多少工作要等待用户。虽然我找不到在 laravel 队列中的特定工作之前获得多少工作的方法。我使用 beanstalkd 作为队列。
【问题讨论】:
标签: laravel laravel-5 queue jobs beanstalkd
我在我的服务器上为用户提供了一些时间成本计算服务。我将这些计算工作放在作业队列中。所以我需要显示有多少工作要等待用户。虽然我找不到在 laravel 队列中的特定工作之前获得多少工作的方法。我使用 beanstalkd 作为队列。
【问题讨论】:
标签: laravel laravel-5 queue jobs beanstalkd
与“How can I get a list of all jobs in a beanstalk tube?”的答案一样,Beanstalkd 不是数组。它的设计目的不是为了在其中搜索或计数,而只是为了获得下一份工作。
如果您想查看队列中有多少作业以及它们在顺序中的位置,请在其他数据存储区(例如 Redis 或 memcached)中记下。当您将作业放入队列时创建一个条目,并在作业从 Beanstalkd 中删除时删除它。注意 - 此“顺序”或“顺序”仅在所有作业具有相同优先级且您使两个系统保持完美同步时才有效。
您可以更合理地做的一些事情是计算队列(或特定管道/队列)中的作业总数,如果这些作业在它们应该花费的时间上大致相似,请提供估计完成一项新工作(或您刚刚投入的新工作)需要多长时间。
您可以帮助计算具有 createdAt 时间的特殊作业的 ETA,当它运行时,它会将队列中所用的时间(now-createdTime)更新到外部存储。
【讨论】: