获取 laravel 队列中特定作业之前的作业数
Get the number of jobs before specific job in laravel queue
我在我的服务器上为用户提供一些时间成本计算服务。我将这些计算工作放在作业队列中。所以我需要显示有多少作业等待用户。虽然我找不到在 laravel 队列中的特定作业之前获取多少作业的方法。我使用 beanstalkd 作为队列。
正如在“How can I get a list of all jobs in a beanstalk tube?”的回答中,Beanstalkd 不是数组。它不是为了在内部搜索或计数而设计的,只是为了让下一份工作继续下去。
如果您想查看队列中有多少作业,以及它们的顺序,请在其他地方记录,在另一个数据存储中 - 例如 Redis 或 memcached。当您将作业放入队列时创建一个条目,并在作业从 Beanstalkd 中删除后将其删除。注意 - 此 'order' 或 'sequence' 仅在所有作业具有相同优先级且您使两个系统保持完美同步时才有效。
您可以更合理地做的一些事情是计算队列中的作业总数(或特定 tube/queue),如果这些作业在时间上大致相似,则它们应该接受,估计完成一项新工作(或您刚刚投入的新工作)需要多长时间。
您可以帮助计算具有 createdAt 时间的特殊作业的 ETA,当它 运行 时,它会将队列中花费的时间 (now-createdTime) 更新到外部存储。
我在我的服务器上为用户提供一些时间成本计算服务。我将这些计算工作放在作业队列中。所以我需要显示有多少作业等待用户。虽然我找不到在 laravel 队列中的特定作业之前获取多少作业的方法。我使用 beanstalkd 作为队列。
正如在“How can I get a list of all jobs in a beanstalk tube?”的回答中,Beanstalkd 不是数组。它不是为了在内部搜索或计数而设计的,只是为了让下一份工作继续下去。
如果您想查看队列中有多少作业,以及它们的顺序,请在其他地方记录,在另一个数据存储中 - 例如 Redis 或 memcached。当您将作业放入队列时创建一个条目,并在作业从 Beanstalkd 中删除后将其删除。注意 - 此 'order' 或 'sequence' 仅在所有作业具有相同优先级且您使两个系统保持完美同步时才有效。
您可以更合理地做的一些事情是计算队列中的作业总数(或特定 tube/queue),如果这些作业在时间上大致相似,则它们应该接受,估计完成一项新工作(或您刚刚投入的新工作)需要多长时间。
您可以帮助计算具有 createdAt 时间的特殊作业的 ETA,当它 运行 时,它会将队列中花费的时间 (now-createdTime) 更新到外部存储。