作业不调度到作业表Laravel

gcuhipw9  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(89)

根据我的.env配置(QUEUE_DRIVER=database),我正在分派一个作业,它应该进入作业表
但是发生的是作业表中什么都没有出现,作业甚至没有在同步模式下运行,例如。我看了queue:listen,Laravel日志文件,failed_jobs表也是空的。请帮助我,我的作业消失了

**OBS:**我在修改.env文件后运行artisan config:clear,然后重新启动PHP FPM服务

我注意到的一件事是,当我将QUEUE_DRIVER设置为sync时,它会运行我调度的所有作业,即使它们没有进入作业表
我失去了什么吗?

1tu0hz3e

1tu0hz3e1#

我今天在Lumen 8. x中遇到了同样的问题。我正在使用dispatch(new ExampleJob);排队,所以在花了一些时间在谷歌上搜索但没有成功后,我决定用Queue::push(new ExampleJob);替换dispatch(new ExampleJob);。我的vscode代码编辑器抛出未知类错误,所以我在类的顶部添加了use Illuminate\Support\Facades\Queue;,然后作业开始正常排队。有关更多详细信息,请参阅Dispatching Jobs section。我希望这对某些人有所帮助外面

nnt7mjpx

nnt7mjpx2#

如果您使用队列与数据库驱动程序,并且您的项目处理多个数据库连接,可能您的队列表不在默认连接中,在这种情况下,您应该确保在队列连接配置中正确设置数据库连接配置。
在我的例子中,当将作业添加到队列时,请求达到了它的最大执行时间。
在多次查看队列配置后,我注意到使用“队列连接”的“数据库连接”设置不正确。
在我的.env中:

QUEUE_CONNECTION=database

字符串
在config/queue中:

'default' => env('QUEUE_CONNECTION', 'database'),

'connections' => [

         'sync' => [
             'driver' => 'sync',
         ],

         'database' => [
             'driver' => 'database',
             'connection' => 'sync', //<-- "sync" is my database connection name, it could also be "mysql" or "my_own_custom_database_connection", enter your DB connection that has your jobs table
             'table' => 'jobs',
             'queue' => 'default',
             'retry_after' => 90,
             'after_commit' => false,
         ],

**注意关键字connections.database.connection中的注解,它说:

“sync”是我的数据库连接名(但它不是项目的默认名称),它也可以是“mysql”或“my_own_custom_database_connection”,输入您的DB连接,其中包含您的作业表。
我知道由于连接的指定不正确,请求永远不会结束,并且到达max_execution_time

o2gm4chl

o2gm4chl3#

当您将QUEUE_DRIVER设置为同步时,已调度的作业将立即运行,而不会插入作业表中。因此,您应该将其设置为'database'以获得所需的操作。

相关问题