Redis 订阅发布输出有顺序问题

redis订阅发布输出有顺序问题
我做了键值过期时的demo。做了一个测试让aaa延迟10s然后打印,bbb的不做延迟。随后

redis订阅发布输出有顺序问题
aaa先设置,一两秒后在设置bbb。打印出来的结果顺序是
redis订阅发布输出有顺序问题
他等第一个量完成才执行第二个,这样有点不太符合我的需求。我需要谁执行完谁输出。我该怎么改呢??

颠倒的玉石
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
leo
最佳答案

@颠倒的玉石 如果你这个是在 Cli 里运行的话,可以用 pcntl_fork。当然还有另外一个选择是 swoole。

4年前 评论
讨论数量: 8
leo

传统 PHP 是单线程,sleep 的时候是阻塞的

4年前 评论
颠倒的玉石

@leo 是我用这个sleep函数的问题吗??

4年前 评论
leo

@颠倒的玉石 是不是 sleep 无所谓,传统 PHP 都是阻塞的,你在这里放入业务代码也是一样的输出顺序。

4年前 评论
颠倒的玉石

@leo 我就是发现业务代码也是这个顺序,所以才做了这个测试。有什么方法可以不这样么??因为有一部分逻辑会很慢,后面的都阻塞了

4年前 评论
leo

@颠倒的玉石 如果你这个是在 Cli 里运行的话,可以用 pcntl_fork。当然还有另外一个选择是 swoole。

4年前 评论
颠倒的玉石

@leo 好的 :blush:

4年前 评论

redis的key过期本来就不是到时间就执行,是按需执行,所以既不能保证顺序也不能保证到时间就执行,官网都写了
而且sleep阻塞整个进程bbb就算到时间了也不会执行吧

https://github.com/snower/forsun-laravel

之前做的定时服务或许可以帮助你

4年前 评论
颠倒的玉石

@snower 不是sleep问题,是整个php问题,就是如果aaa执行很慢,就算bbb到时间了也会被阻塞。我需要的就是多进程异步,一个进程执行aaa,bbb由另一个进程执行。。。。。。我现在做法用了一个键值过期,一个publish。他俩满足这个需求。。。。我觉得彻底解决这个只能swoole了。

4年前 评论

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