其實以前用過activemq,可是這個東西基於Java的,得裝一堆東西,還得配置,並且我只是比較簡單的功能,因此就沒打算上這個,不事後面瞭解到其實yii2-queue也能夠結合的php
首先得安裝,用的是composer,這個很簡單,在你的項目目錄下面redis
composer require --prefer-dist yiisoft/yii2-queue
##配置sql
找到你的項目配置文件,高級版是main.php,普通版console.php,在裏面加上你的配置,這個yii2-queue可使用各類驅動模式來作,我這裏選取了redis,因此你得必須先有redis,若是沒有能夠用file來驅動數據庫
// 把這個組件註冊到控制檯 'bootstrap' => [ 'queue', ], 'components' => [ 'queue' => [ 'class' => \yii\queue\redis\Queue::class, // 鏈接組件或它的配置 'redis' => 'redis', // Queue channel key 'channel' => 'queue', ], 'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => 'localhost', 'port' => 6379, 'database' => 0, ] ]
配置就那麼簡單bootstrap
首先咱們得寫一個隊裏文件,裏面執行一個隊裏的任務,我這裏簡單的寫了一個yii2
<?php namespace common\components; use yii\base\BaseObject; class Job extends BaseObject implements \yii\queue\JobInterface { public $url; public $file; public function execute($queue) { file_put_contents($this->file, file_get_contents($this->url)); } }
上面是隊列執行的文件,咱們要使用它是這樣使用的,通常在控制器裏面使用app
use common\components\Job; public function actionJob(){ //添加任務到隊列 Yii::$app->queue->push(new Job([ 'url' => 'http://img.netpc.com.cn/2018/06/12080502tmd.jpg', 'file' => '/Users/gongchuandong/www/project/ideaboat\1.jpg', ])); } // 延時5s觸發 Yii::$app->queue->delay(5)->push(new Job([ 'url' => 'http://img.netpc.com.cn/2018/06/12080502tmd.jpg', 'file' => '/Users/gongchuandong/www/project/ideaboat\1.jpg', ]));
最後你還得在命令行把這個隊列的監聽監聽起來composer
./yii queue/listen
這樣就能夠了yii
我在隊列裏面執行sql的時候,發現了一個坑,不管如何都沒法保存,保這個錯誤ide
SQLSTATE[HY000] [2002] No such file or directory in
最後Google一下,須要把數據庫鏈接從localhost改成127.0.0.1,就OK了