利用Redis可以很方便的实现一个任务队列,但是在Laravel中,Redis的队列总会出现一个任务多次执行的问题。究其原因是它写死了reserved的时长,也就是如果1分钟后任务没有执行完成,那么这个任务就会被重新放回队列。下面是队列的简单使用和执行原理。
设置
设置队列使用Redis非常容易,在app/config/queue.php
中配置
-
...
-
'default' => 'redis',
-
...
-
'connections' => array(
-
...
-
'redis' => array(
-
'driver' => 'redis',
-
'queue' => 'waa',
-
),
-
),
即可。
使用
使用时不需要多配置,只要写好Queue类和其fire方法,在需要的位置出队即可