swoole 处理 has already been bound to another coroutine xxx异常

 分享下之前在使用swoole开发项目时遇到的swoole协程问题。swoole 异常信息 P Fatal error: Uncaught Swoole\Error: Socket#37 has already been bound xxxPHP Fatal error: Uncaught Swoole\Error: Socket#37 has already been bound to another coroutine#19895, reading of the same socket in coroutine#19896 at the same time is not allowed in /www/wwwroot/default/vendor/xxx.php:34 Stack trace: xxxxxxxxxx问题分析 从日志看像是同一个Socket链接不能同时存在于不同的协程里面,也就是不能夸协程使用mysql,redis同一条连接对象。问题处理 知道问题就好处理了可以使用swoole channel 实现一个连接池如下:Channelprivate static ...

PHP,解决方案 2022-02-22 PM 1247次 0条

php使用swoole框架静态变量,全局变量并发安全问题

 我们在首次使用 Swoole 框架时候发现有三类变量问题需要主要,问题的主要造成因素应该是 Swoole 常驻内容变量内存共享导致的主要有一下三类使用 global 关键词声明的变量使用 static 关键词声明的类静态变量、函数静态变量PHP的超全局变量,包括$_GET,$_POST,$GLOBALS等 这三种类型的变量在 Swoole 模式下都存在并发安全问题Swoole 变量问题 A,B,C三人依次访问设置变量分别为1,2,3程序返回时分别对A,B,C三人的请求进行延迟3,2,1秒按照正常逻辑来看A,B,C三人访问设置的1,2,3那么对应返回的值就是设置的值,但是通过使用swoole发现三人返回的结果为最后一个人设置的值也就是3这种情况就是我们刚才所说的三类变量问题Swoole 全局变量 Global 问题演示 // 数据混乱演示 public function index() { // 并发安全问题,会出现数据混乱 // 第一次访问 http://192.168.100.103:8088/Context/index?i=1 ...

PHP,解决方案 2021-09-11 AM 445次 0条

一文搞懂前端service-worker 技术

老马首次接触Service Worker还是在使用 jsproxy 开源项目中开始以为是一种新技术普及少应用更少随着使用的过程中,不断的发现其实国内外的一些大型购物,技术性,社交网站包过一些混合APP等等已经再使用 Service Worker 这项技术了本文将一步异步全面详细的讲述 Service Worker 技术的应用实操什么是Service Worker服务器与浏览器之间的中间人,如果网站中注册了Service Worker那么它可以拦截当前网站所有的请求,进行判断(需要编写相应的判断程序),如果需要向服务器发起请求的就转给服务器,如果可以直接使用缓存的就直接返回缓存不再转给服务器,我们在Service Worker 中可以做拦截客户端的请求、向客户端发送消息、向服务器发起请求等先关操作,其中最重要且广泛的的作用就是离线资源缓存。特性基于web worker(JavaScript主线程的独立线程,如果执行消耗大量资源的操作也不会堵塞主线程)在web worker的基础上增加了离线缓存的能力本质上充当Web应用程序(服务器)与浏览器之间的代理服务器创建有效的离线体验(将一些...

前端,其他 2021-09-06 AM 7896次 0条