1、安装插件
composer require yiisoft/yii2-queue
2、config里注册queue,
'bootstrap' => ['log','queue'//注册控制台命令],
3、设置
// config/*config.php
return [
'bootstrap' => [
'queue',
],
'components' => [
'queue' => [
'class' => \yii\queue\db\Queue::class,
'db' => 'db', // DB 连接组件或它的配置
'tableName' => '{{%queue}}', // 表名
'channel' => 'default', // Queue channel key
'mutex' => \yii\mutex\MysqlMutex::class, // Mutex that used to sync queries
],
],
];
4、创建任务
<?php
namespace xxx;
use yiibaseBaseObject;
class Download extends BaseObject implements yiiqueueJobInterface {
public $url;
public $file;
public function execute($queue) {
file_put_contents($this->file, file_get_contents($this->url));
}
}
5、找一个执行的触发控制器
class TestController extends Controller{
public $enableCsrfValidation=false;
public function actionIndex(){
Yii::$app->queue->push(new QueueJob([
'url' => 'xxxxxx',
'file' => 'D:\xxxx\image_'.rand(0,1000000).'.jpg',
]));
}
}
6、启用监听
./yii queue/listen //实时监听
7、查看执行状态等
yii queue/info 查看队列状态
yii queue/clear 清空队列
yii queue/remove [id] 移除某个id任务