return [ // 驱动方式 'type' => 'redis', // 服务器地址 'host' => '127.0.0.1', //密码 'password' =>'12345', // 全局缓存有效期(0为永久有效) 'expire'=> 0, // 缓存前缀 'prefix'=> 'yx_', ];
cache('times',time());
在redis可视化工具中查看是否存在string格式数据 times
如上图所示,至此代表redis安装成功,并测试通过。
composer require topthink/think-queue
*注意framework的版本必须是5.1.才可以安装否则安装失败。
配置队列的方式,采用redis队列,在config文件夹下更给queue.php;更改内容如下
return [
//'connector' => 'Redis',
'connector' => 'Redis', // 数据库驱动
// 服务器地址
'host' => '127.0.0.1',
//密码
'password' =>'12345',
'expire' => 60, // 任务的过期时间,默认为60秒; 若要禁用,则设置为 null
'default' => 'default', // 默认的队列名称
];
按照上述的代码更改queue.php文件的代码,注意:若在安装redis时更改了redis的密码,那请把redis的密码改为自己设置的密码;host也可以改为服务器的地址,但是切记必须和密码是一对的
在application文件夹下创建job文件夹,在job文件夹下创建job1.php;并加入如下的代码内容。
attempts() == 2) {
//通过这个方法可以检查这个任务已经重试了几次了
//如果任务执行成功后 记得删除任务,不然这个任务会重复执行,直到达到最大重试次数后失败后,执行failed方法
cache('endtime',time());
$job->delete();
}
// 也可以重新发布这个任务
//$job->release($delay); //$delay为延迟时间
}
/**
* 任务达到最次数失败
* @param $data
*/
public function failed($data){
// ...任务达到最大重试次数后,失败了
cache('failtime',time());
}
}
上面的类可以不继承controller类。注意监听任务的时候,需要先发布任务,才可以监听,否则的话,无法监听任务
Queue::push('Job1', $data = 'tesadada000', $queue = null);
其中job1是任务类名,$data是任务需要传入的参数,第三个参数是指定队列
在监听任务前,先访问发布队列任务的接口,来把任务加入队列当中,然后再执行任务,具体的代码如下
这个是在命令管理里面输入的;命令如下
php think queue:listen
php think queue:work --daemon(不加--daemon为执行单个任务)
至此所有的操作就已经完成了,还有疑问的小伙伴可以在下方评论,说出你们的疑点
注意上面的流程有几部是省略的,省略的步骤如下