unserialize(): Error at offset 0 of 156 bytes in file F:\my\layGateIm\im-for-gateway\vendor\workerman\workerman\Protocols\Http.php on
分析原因:英文数据中含有中文字符串,所以我们就可以想到编码的问题,serialize()函数对在不同编码下对中文的处理结果是不一样的。
再讲gbk转换成utf8的格式后,每个中文的编码数从2个会增加到3个,所以会导致反序列化的时候判断字符长度出现问题 。
建议更换成json处理或者其他方式。
json 貌似只能是utf8,其它编码不支持吧
查的资料一般都序列化之前先转出base64然后再序列化
感谢反馈,不过这个问题应该不是serialize编码问题,有可能是并发读写session文件导致的
那有什么办法解决么是不是加锁就可以了?
应该要加一个锁
找到原因了,因为我同时用了apache和webhttp,偶尔会出现他俩拿到的session文件名一样,自带的apache去写了一遍这个session文件,然后格式就不对了,我把前缀sess_改成worker_sess_就好了
好的,感谢反馈