尝试 laravel 队列遇到了问题求解答

2017-08-09 11:31:39 +08:00
 2ME

想试试 laravel 内置的队列 按照文档的流程测试了一下 遇到了问题 不会添加队列 而是直接执行

流程是这样 求解答哪里出了问题 = =


Laravel Framework version 5.3.31

//修改队列驱动
QUEUE_DRIVER=database

//创建队列表的 migration 文件
php artisan queue:table

//执行 magrite 命令创建 jobs 表
php aritsan magrite

//创建了个 task 任务类
php artisan make:job task


//Task 类的内容

public $task;

public function __construct($task)
{
    $this->task = $task;
}

public function handle()
{
    Log::info('task:'.$this->task);
}

//路由内容
Route::get('/',function (){
    dispatch(new App\Jobs\Task('test queue'));
});

//访问首页之后表中没有数据 LOG 直接写入了数据
[2017-08-09 11:05:49] local.INFO: task:test queue  

3196 次点击
所在节点    PHP
5 条回复
myc0210
2017-08-09 11:40:31 +08:00
整个 class 贴一下 有 use queueable 的 trait 吗。没有的话 不会用到队列的会直接执行
ylsc633
2017-08-09 11:40:55 +08:00
.env 里 QUEUE_DRIVER 可修改了?

默认等于 sync

你可以修改为 redis....
chenset
2017-08-09 11:41:08 +08:00
1.队列由 database 驱动的话, 队列执行完之后表中的队列数据会被删除的吧? 至少使用 redis 驱动时就是这样.
2. .env 有没有缓存? .env 修改后有没有 php artisan config:clear
3. 有没有 php artisan queue:work ?

你可以显性的输出字符串看看程序是否异步执行了.
```
public function handle()
{
dump(__LINE__);
Log::info('task:'.$this->task);
}

```
2ME
2017-08-09 11:43:58 +08:00
@myc0210 有 use
@ylsc633 第一行就是修改了 一开始怀疑不生效 我又去改了 config 里面的
@chenset 没执行 work 命令 就直接执行了
刚才我又试了一下(new App\Jobs\Task('test queue'))->onConnection('database');
指定链接 数据库就可以用了 但是我配置确实是改了 ..
2ME
2017-08-09 11:45:55 +08:00
找到原因了.. 重启 php artisan serve 就好了 谢谢大家解答

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381597

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX