配置文件根目录下config/queue.php
return [
'default' => 'redis',
'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',
],
];
控制器创建消息
use app\job\service\Create;
use think\facade\Queue;
public function create()
{
$post = $this->postData();
$post['url']=base_url();
$jobQueueName = "Create";
// 将任务放入消息队列中,使用默认的队列驱动(如Redis)和默认的队列名(如default)
$isPushed = Queue::push(Create::class, $post, $jobQueueName);
if($isPushed!==false){
return $this->renderSuccess('后台正在生成中,请稍后刷新列表',$isPushed);
}
return $this->renderError('生成失败,请联系管理员!');
//
}
然后在app\job\service目录下处理生成的消息队列
namespace app\job\service;
class Create
{
public function fire($job, $data)
{
//处理业务逻辑
// 任务成功处理
$job->delete(); // 删除队列任务
}
}
cmd 开启服务 php think queue:work --queue Create
这样就成功了
注:如果失败了 可以在日志里看报错信息runtime/logs 下面
注意 要开启redis服务