Hi,walkor,分布式部署websocket服务时使用Channel组件进行通讯,发送数据时意外出现错误 打印了unserialize($data)中的$data数据,数据如下图所示。是什么原因呢?
ErrorException: unserialize(): Extra data starting at offset 294 of 295 bytes in xx/vendor/workerman/channel/src/Client.php:142。
PHP8.3
打印了下前后数据的对比,为什么会多了个回车换行呢?
可能是PHP版本问题,可以降低一个版本(8.2)试试
应该是PHP版本导致的问题,我之前的项目PHP7.4用Channel组件是没有问题的
是不是改协议了,正常是text协议,内容不会出现换行才对
Channel Server一直是frame协议,我使用的是composer require webman/channel安装,没有改动源码。
大伙应该也能遇到这个问题呀,还是你们没有在PHP8.3环境下使用Channel组件?😂
用php8.3的不多吧
估计是PHP8.3改进了unserialize() 错误处理后的原因,但也是因为数据在unserialize时多了个回车换行才报的错误
恭喜你,找到答案了
打印了下前后数据的对比,为什么会多了个回车换行呢?
可能是PHP版本问题,可以降低一个版本(8.2)试试
应该是PHP版本导致的问题,我之前的项目PHP7.4用Channel组件是没有问题的
是不是改协议了,正常是text协议,内容不会出现换行才对
Channel Server一直是frame协议,我使用的是composer require webman/channel安装,没有改动源码。
大伙应该也能遇到这个问题呀,还是你们没有在PHP8.3环境下使用Channel组件?😂
用php8.3的不多吧
估计是PHP8.3改进了unserialize() 错误处理后的原因,但也是因为数据在unserialize时多了个回车换行才报的错误
恭喜你,找到答案了