第一步:安装插件
composer require topthink/think-queue
第二步:设置配置文件
thinkphp-queue安装完成后,在config文件夹会生成queue.php
这里可以选择默认使用redis模式

第三步:创建job任务文件
比如在app/jobs文件夹下创建mail文件
class SendMail
{
/**
* 默认任务
* @param Job $job 当前任务
* @param mixed $data 任务数据
*/
public function fire(Job $job, $data)
{
// 发送邮件,send_mail方法需要自己封装
$res = send_email($data);
// 发送成功,删除当前任务。如果不删除,会重新执行任务!!!
if ($res) {
$job->delete();
return;
}
// 如果重试发送超过3次都没成功,那就记录错误一条日志
if ($job->attempts() > 3) {
error_log('邮件发送失败');
$job->delete();
return;
}
// 当然,如果测试时间不想因为失败而导致删除任务,可以重新发布任务
$job->release(5);
}
}第四步:在controller中添加队列
class Index{
public function add(){
$job_handle_name = 'app\job\Test';
$job_queue_name = "testTask";
$data = [
'name'=> 'queue-' .rand(1, 9),
'time'=> time(),
];
// 发送发布:任务名, 参数, 队列名
Queue::push($job_handle_name, $data, $job_queue_name);
// 延迟发布: 延迟时间, 任务名, 参数, 队列名//
Queue::later('2',$jobHandlerName,['name'=>$time],$jobQueueName);
echo '加入队列成功:'.$data['time'];
}}第五步: 监听任务并执行
php think queue:listen --queue 任务名
php think queue:work --queue 任务名
两种,具体的可选参数可以输入命令加 –help 查看
Linux启动守护进程
nohup php think queue:work --daemon --queue 任务名称 & //该命令似乎执行会失败
建议使用supervisor管理进程
查看任务进程编号 jobs -l