Channel组件出现报错,unserialize(): Extra data

xiewen_kevin

问题描述

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。

截图报错信息里报错文件相关代码

截图

操作系统及workerman/webman等框架组件具体版本

PHP8.3

129 2 0
2个回答

xiewen_kevin

截图

打印了下前后数据的对比,为什么会多了个回车换行呢?

  • Tinywan 20天前

    可能是PHP版本问题,可以降低一个版本(8.2)试试

  • xiewen_kevin 20天前

    应该是PHP版本导致的问题,我之前的项目PHP7.4用Channel组件是没有问题的

  • six 20天前

    是不是改协议了,正常是text协议,内容不会出现换行才对

  • xiewen_kevin 20天前

    Channel Server一直是frame协议,我使用的是composer require webman/channel安装,没有改动源码。

  • xiewen_kevin 20天前

    大伙应该也能遇到这个问题呀,还是你们没有在PHP8.3环境下使用Channel组件?😂

  • smile1 20天前

    用php8.3的不多吧

  • xiewen_kevin 19天前

    估计是PHP8.3改进了unserialize() 错误处理后的原因,但也是因为数据在unserialize时多了个回车换行才报的错误

xiewen_kevin

截图

🔝