0
点赞
收藏
分享

微信扫一扫

为什么在swoole 协程中如果存在单例、全局变量、静态变量、静态属性会存在数据污染,导致不安全?

夜空一星 2022-03-30 阅读 26

一.问题
(1)一个请求会占用一个进程,不相同的进程之间是不能相互访问的?进程隔离,不管是fpm还是常驻内存,都会进程隔离
(2)为什么在swoole 协程中如果存在单例、全局变量、静态变量、静态属性会存在数据污染,导致不安全?

二、实践
在laravels中开启两个协程,代码如下图:
在这里插入图片描述
在这里插入图片描述
在co1()方法中开两个协程,在第一个协程中$tmp['a']赋值后sleep(10),由于协程异步非阻塞执行,第二个协程先执行完毕并对$tmp['a']赋值,导致第一个协程的$tmp['a']的期望输出值被修改。
代码执行结果:
在这里插入图片描述
三、解决方法
https://www.cnblogs.com/danhuang/p/13335697.html

举报

相关推荐

0 条评论