在fec插件中已经实现queue
fec插件:https://github.com/fancyecommerce/yii2-fec
在使用之前,您需要先进行配置如下(注意,添加到console中):
'components' => [
'queue' => [
'class' => 'fec\component\RedisQueue',
],
],
'controllerMap' => [
'queue' => 'fec\component\redisqueue\QueueController'
],
使用方法:
1.首先建立一个Job类,实现run方法:
譬如:\fec\component\redisqueue\TestJob
<?php
namespace fec\component\redisqueue;
class TestJob
{
public function run($job, $data)
{
//process $data;
var_dump($data);
}
}
2. 执行命令行,设置监听,监听到任务,就执行。
这里一般是多台主机,一起过来拿任务,因此这里一般是多台主机,配置的都是同一个redis。从redis过来拿数据。
主机1:
./yii queue/listen MyTestQueue
主机2:
./yii queue/listen MyTestQueue
3. 往序列里面添加任务:
$job = '\fec\component\redisqueue\TestJob'; #任务类,实现了run方法 $data = ['a', 'b', 'c']; # 参数 $queue = 'MyTestQueue'; # queueName,这里和命令行哪里的名字对应 CRedisQuery::push($job,$data,$queue); # 开始加任务。
执行后,可以看到命令行处,有刚才添加的任务。