3

我是使用 laravel/lumen 的新手

几个小时前我生成了一个新的流明项目,我正在尝试使用数据库驱动程序将作业发送到默认队列。

我的 .env 文件看起来像这样

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=mydb
DB_USERNAME=root
DB_PASSWORD=xxxx

CACHE_DRIVER=file
QUEUE_DRIVER=database

按照官方Queues - Lumen页面,我生成了一个迁移来创建作业failed_jobs表。

config/queue.php文件有默认配置

问题:

  1. 在运行命令之前,php artisan queue:work我尝试将作业发送到队列,Queue::push(new SendEmailJob) 它立即运行并且我还没有运行命令php artisan queue:work。我检查数据库和表作业是空的。
  2. 我运行命令php artisan queue:work向特定端点发出请求,使用此行之一将作业放入队列,Queue::push(new SendEmailJob)否则 dispatch(new SendEmailJob()) 我没有错误但作业队列仍然为空

我究竟做错了什么?

为什么在我运行命令之前排队处理所有作业php artisan queue:work

提前致谢

4

2 回答 2

0

APP.PHP

if(\Illuminate\Support\Facades\Schema::hasTable("jobs")) Queue::push(new ProcessCenterJob());

于 2021-08-25T08:34:34.217 回答
0
  1. 您可以调度作业并在执行之前要求延迟:

$this->dispatch((new ProcessJob($id))->delay(10)); // 10 毫秒

  1. 确保工作人员没有运行:

ps aux|grep 队列

如果是这样,杀了它。尽管最佳做法是在任何代码更改后重新启动工作器:

php工匠队列:重新启动

于 2018-05-21T23:13:35.007 回答