Laravel Redis键过期,supervisor 进程管理实现15分钟取消订单

1、自动取消订单考虑到Redis键过期进行处理,修改Redis配置文件,并重启Redis
notify-keyspace-events "Ex"
2、Laravel安装Redis扩展
composer require predis/predis
3、Laravel配置Redis连接
这里不详细介绍,.env  config\database.php 配置即可
4、建立任务文件
php artisan make:command OrderCloseExpireListen

app\Console\Commands\OrderCloseExpireListen

str_before($channel);
		if($key_type == 'ORDER_CLOSE_ID'){
		    $order_id = $this->str_after($channel);    // 获取订单ID
            $order = (new Order())->getOne(['id'=>(int)$order_id]);
			//取消订单业务逻辑
		}           
    });
}

}

4、执行
php artisan orderClose:expire
使用supervisor进程管理
centos 安装: yum install supervisor 
启动服务:supervisord -c /etc/supervisord.conf
修改配置:vim /etc/supervisord.conf
files = supervisord.d/\*.conf // 注意:编译器问题用的时候去掉\
cd /etc/supervisord.d/
vim orderClose.conf

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /项目目录/artisan orderClose:expire
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stderr_logfile=/etc/supervisord.d/log/ossoffical.err.log #错误日志文件
stdout_logfile=/etc/supervisord.d/log/ossoffical.out.log #输出日志文件

supervisorctl reload  //重新加载配置文件
5、存Redis
Redis::set('ORDER_CLOSE_ID:1', 1, 'EX', 900); // 设置ORDER_CLOSE_ID:1这个键15分钟后过期

你可能感兴趣的:(PHP,larrael,Redis,laravel,redis,php)