1:安装queuecomposerrequireyiisoft/yii2-queue2:配置queue安装queue后,我们在项目中运行phpyii,发现没有queue相关的命令。这是怎么回事?这是因为我们没有配置队列。注意:这里配置队列的时候,web和console都必须有关于队列的配置。比如Yii基础版的console.php和web.php文件都需要配置Yii的队列。支持多种驱动,例如:DB、Redis、RabbitMQ、AMQP、Beans。而Gearman这里我使用的是DB(数据库)驱动,如果想使用其他驱动,请参考:https://github。com/yiisoft/yi...'bootstrap'=>['queue'//注册控制台命令],'components'=>['queue'=>['class'=>'yii\queue\db\Queue',//需要引入的队列类'db'=>'db',//数据库配置'tableName'=>'{{%queue}}',//需要引入的新队列表名becreated'channel'=>'test_db_queue',//queuechannelkey'mutex'=>'yii\mutex\MysqlMutex',//用于同步查询'ttr'=>300,//对应默认最大执行时间(seconds)],],配置完成后,当我们在命令行执行phpyii时,发现有queue相关的命令。队列相关命令说明:phpyiiqueue/clear#clearqueuephpyiiqueue/exec#executequeuetaskphpyiiqueue/info#displayqueue的状态信息(默认该命令)phpyiiqueue/listen#Listen到队列并运行队列任务phpyiiqueue/remove#根据id删除队列任务phpyiiqueue/run#运行所有队列任务由于我们使用的是DB驱动,所以此时需要创建对应的队列队列表。yii中的queue队列组件提供了创建queue队列表的方法。我们只需要在脚本配置文件中配置如下即可:'controllerMap'=>['queue-migrate'=>['class'=>'yii\console\controllers\MigrateController','migrationPath'=>null,'migrationNamespaces'=>['yii\queue\db\migrations',],],],主要是上面的配置不在组件的配置里面,而是同级的。配置完成后,我们在命令行中执行phpyii,找到如下命令queue-migrate,这里的命令是帮我们新建一个queue队列数据表phpyiiqueue-migrate这时候我们可以找到一个queuetableinourdatabase3:Usequeue接下来我写一个简单的下载文件队列来测试1:写一个下载文件的队列类:file,file_get_contents($this->url));}}2:调用队列类:Yii::$app->queue->push(newDownload作业(['url'=>'https://api.wj0511.com/static/upload/pic/20181030132555-623070617127980.jpg','文件'=>'/tmp/image.jpg',]));也可以延迟执行指定秒//延迟5秒Yii::$app->queue->delay(5*60)->push(newDownloadJob(['url'=>'https://api.wj0511.com/static/upload/pic/20181030132555-623070617127980.jpg','file'=>'/tmp/image.jpg',]));运行调用方法后,在命令行中执行phpyiiqueue,我们会发现有一个queuetaskwaiting。这时候我们可以使用phpyiiqueue/run或者phpyiiqueue/listen来执行队列任务。phpyiiqueue/listen-v可以看到执行队列的信息
