作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有任何最佳实践来确定作业/工作人员何时完成处理 Laravel 队列?我能想到的唯一方法是轮询作业表以查看队列中何时不再有作业。
我面临的挑战是,我将定期向队列分配 1,000 个作业,然后在一段时间后再分配 1,000 个,然后再分配一个。如果可能的话,我希望能够在每批作业完成后触发一个事件。
感谢您的任何建议或指点。
最佳答案
不,没有这样的功能。然而,通过监听 Illuminate\Queue\Events\Looping
事件(在 Laravel 5.4 之前是 illuminate.queue.looping
)并检查队列大小来实现很简单。
<?php
use Illuminate\Contracts\Events\Dispatcher;
use Illuminate\Queue\Events\Looping;
class QueueSizeCheckerAndEventThingieSubscriber {
public function subscribe(Dispatcher $events) {
$events->listen(Looping::class, self::class . '@onQueueLoop'); // >= 5.4
$events->listen('illuminate.queue.looping', self::class . '@onQueueLoop'); // < 5.4
}
public function onQueueLoop() {
$queueName = 'my-queue';
$queueSize = Queue::size($queueName);
if ($queueSize === 0) {
// Trigger your event.
}
}
}
关于php - 在所有作业完成后轮询 Laravel 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41228745/
我是一名优秀的程序员,十分优秀!