牛骨文教育服务平台(让学习变的简单)

事件处理队列

需要把事件处理程序放到 队列 吗?这不能变得再更简单了。当你产生处理程序,简单地使用 --queued 旗标:

php artisan handler:event SendPurchaseConfirmation --event=PodcastWasPurchased --queued

这将会产生一个实现了 IlluminateContractsQueueShouldBeQueued 接口的处理程序类。这样就可以了!现在当这个处理程序因为事件发生被调用,它将会被事件配送器自动地排进队列。

当处理程序被队列执行,如果没有异常被丢出,在执行后该队列中的任务将会自动被删除。你也可以手动取用队列中的任务的 delete 和 release 方法。队列处理程序默认会引入的 IlluminateQueueInteractsWithQueue trait,让你可以取用这些方法:

public function handle(PodcastWasPurchased $event)
{
    if (true)
    {
        $this->release(30);
    }
}

如果你想要把一个已存在的处理程序转换成一个队列的处理程序,简单地手动添加 ShouldBeQueued 接口到类。