一. composer安装 think-queue
composer require topthink/think-queue
二. 配置 config/queue.php
<?php return [ 'default' => 'sync', 'connections' => [ 'sync' => [ 'type' => 'sync', ], 'database' => [ 'type' => 'database', 'queue' => 'default', 'table' => 'jobs', 'connection' => null, ], 'redis' => [ 'type' => 'redis', 'queue' => 'default', 'host' => '127.0.0.1', 'port' => 6379, 'password' => '', 'select' => 0, 'timeout' => 0, 'persistent' => false, ], ], 'failed' => [ 'type' => 'none', 'table' => 'failed_jobs', ], ];
三. 在app下创建 job/Test.php
<?php namespace app\job; use think\queue\Job; class Test { public function fire(Job $job, $data) { if ($job->attempts() > 3) { Log::write('Test执行失败了'); $job->delete(); } else { // 你的数据操作 } } }
四. 业务中调用
use think\facade\Queue;
/*延时队列*/
Queue::later(60, 'app\job\Test', [name=>'sb'], 'Test'); //参数1:时间,,参数2:路径,参数3:业务参数,参数4:队列名称
//php think queue:listen --queue Test执行队列
//nohup php think queue:listen --queue Test& 不以守护进程执行