生成为 Laravel 作业队列创建表的迁移?
Posted
技术标签:
【中文标题】生成为 Laravel 作业队列创建表的迁移?【英文标题】:Generate migration that creates table for Laravel jobs queue? 【发布时间】:2019-01-23 19:52:40 【问题描述】:我正在尝试设置一个表以便在 Laravel 中异步执行作业。我已经编写了作业类并且可以分派它。但是它是同步调度的。
遵循documentation 当我尝试使用php artisan queue:table
创建迁移时,我收到以下错误:
[Symfony\Component\Console\Exception\CommandNotFoundException]
Command "queue:table" is not defined.
Did you mean one of these?
queue:failed
queue:work
queue:restart
queue:listen
queue:retry
queue:forget
queue:flush
我注意到我最初在 config 目录中没有 queue.php 文件,所以我添加了 repository 中的一个并将 'default' => env('QUEUE_DRIVER', 'sync')
更改为 'default' => env('QUEUE_DRIVER', 'database'),
;
我还在 .env 文件中将 QUEUE_DRIVER=sync
更改为 QUEUE_DRIVER=database
。
我是 Laravel 工作队列的新手,所以我不确定我错过了什么。如何创建迁移以利用数据库队列驱动程序?
更新:
我最终只是在 postgres db 中创建了一个作业表,我按照Lumen documentation 中描述的结构使用我的其余数据并使用它来存储作业,但仍然很好奇为什么queue:table
函数不可用.
Laravel 框架版本 Lumen (5.3.3)(Laravel Components 5.3.*)
【问题讨论】:
而不是自己做。您可以为此目的使用 laravel 的 Horizon(laravel.com/docs/5.6/horizon)。但是,如果您学习如何手动使用它们会很好。如果可以,请更新 laravek 版本。 5.3 现在太旧了 @TimLewis 我有,只是使用了错误的链接,已更新。 没问题;就在我第一次读到你的问题时,它作为一个危险信号向我跳了出来;错误的版本等。我可以看到它不是,所以可能与 Lumen vs Laravel 有关? @TimLewis 无论哪种方式都很好。啊,你对 Lumen 的看法可能是对的。 只是猜测。恐怕我从未使用过 Lumen,但如果该功能可用,您应该能够在自己的自定义命令中模仿该过程;只需查看queue:table
命令的作用并复制到您自己的。
【参考方案1】:
php artisan queue:table
这个命令是对的,但是在 .env 文件中设置了 QUEUE_DRIVER=database 并在工作中检查
class TempleteEmailJob implements ShouldQueue
创建迁移需要实现 ShouldQueue
然后 php artisan 迁移
【讨论】:
以上是关于生成为 Laravel 作业队列创建表的迁移?的主要内容,如果未能解决你的问题,请参考以下文章