根据我的.env配置(QUEUE_DRIVER=database
),我正在分派一个作业,它应该进入作业表
但是发生的是作业表中什么都没有出现,作业甚至没有在同步模式下运行,例如。我看了queue:listen
,Laravel日志文件,failed_jobs表也是空的。请帮助我,我的作业消失了
**OBS:**我在修改.env文件后运行artisan config:clear
,然后重新启动PHP FPM服务
我注意到的一件事是,当我将QUEUE_DRIVER设置为sync
时,它会运行我调度的所有作业,即使它们没有进入作业表
我失去了什么吗?
3条答案
按热度按时间1tu0hz3e1#
我今天在Lumen 8. x中遇到了同样的问题。我正在使用
dispatch(new ExampleJob);
排队,所以在花了一些时间在谷歌上搜索但没有成功后,我决定用Queue::push(new ExampleJob);
替换dispatch(new ExampleJob);
。我的vscode代码编辑器抛出未知类错误,所以我在类的顶部添加了use Illuminate\Support\Facades\Queue;
,然后作业开始正常排队。有关更多详细信息,请参阅Dispatching Jobs section。我希望这对某些人有所帮助外面nnt7mjpx2#
如果您使用队列与数据库驱动程序,并且您的项目处理多个数据库连接,可能您的队列表不在默认连接中,在这种情况下,您应该确保在队列连接配置中正确设置数据库连接配置。
在我的例子中,当将作业添加到队列时,请求达到了它的最大执行时间。
在多次查看队列配置后,我注意到使用“队列连接”的“数据库连接”设置不正确。
在我的.env中:
字符串
在config/queue中:
型
**注意关键字connections.database.connection中的注解,它说:
“sync”是我的数据库连接名(但它不是项目的默认名称),它也可以是“mysql”或“my_own_custom_database_connection”,输入您的DB连接,其中包含您的作业表。
我知道由于连接的指定不正确,请求永远不会结束,并且到达max_execution_time
o2gm4chl3#
当您将QUEUE_DRIVER设置为同步时,已调度的作业将立即运行,而不会插入作业表中。因此,您应该将其设置为'database'以获得所需的操作。