在laravel中使用redis的psubscribe接收redis变量过期事件的问题

我在laravel中使用redis的psubscribe,目的就是为了给订单设置30分钟的过期事件,订单过期后进行一些业务处理。虽然已经达成我的目的了,但是有个诡异的地方。
我访问$redis->psubscribe()的时候,这个方法是会阻塞请求的。而且只有阻塞请求的时候,psubscribe()方法才能捕抓到redis变量过期事件。所以我需要先想办法让这个阻塞请求维持的更久(不让nginx报超时错误)。

那我还需要将nginx的keepalive_timeout设置的非常大

这里设置为0 是做不到永久的,所以我还得设置成无限大的数字,例如100000000。
所以我问一下,虽然我的目的达到了,但是我觉得这样做有点奇怪,是不是我的用法不对。网上也有人在终端里使用php指令访问php文件,这样确实就放着终端在那就好了,比我现在的方式要好,但是我是在laravel中使用redis->psubscribe(),所以还不能使用php指令访问文件。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

是的,你的使用方式错了,包含$redis->psubscribe ()的代码应该作为Linux的一个后台进程运行(简单说就是命令行、CLI方式运行),而不是作为一个Web接口(无论是PHP-FPM还是Swoole)运行

楼上的artisan 命令 + supervisor 守护是CLI方案的具体实现

3年前 评论
rex123 (楼主) 3年前
Tsukasa_Kanzaki (作者) 3年前
rex123 (楼主) 3年前
Tsukasa_Kanzaki (作者) 3年前
rex123 (楼主) 3年前
讨论数量: 2

artisan 命令 + supervisor 守护

3年前 评论

是的,你的使用方式错了,包含$redis->psubscribe ()的代码应该作为Linux的一个后台进程运行(简单说就是命令行、CLI方式运行),而不是作为一个Web接口(无论是PHP-FPM还是Swoole)运行

楼上的artisan 命令 + supervisor 守护是CLI方案的具体实现

3年前 评论
rex123 (楼主) 3年前
Tsukasa_Kanzaki (作者) 3年前
rex123 (楼主) 3年前
Tsukasa_Kanzaki (作者) 3年前
rex123 (楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!