mcq接收数据乱码的坑

问题描述

今天有同事反馈,我们推送到mcq队列中的数据有一些获取到的是乱码。

20180604152808609144385.png

同事使用C语言读取队列,起初认为是他们代码编写有问题,后来自己尝试用php写入同样的数据后立即读取,也会出现乱码数据。并且乱码的数据通常长度比较长。

问题解决

通过google搜索等,发现php高版本memcached库会在写入值到达一定长度时自动进行压缩,将该特性关闭后,数据乱码问题解决

1
2
3
$mc = new \Memcached();
...
$mc->setOption(\Memcached::OPT_COMPRESSION, false);

中间其实有一个问题,在memcached文档中关于数据压缩是这么写的
2018060415280865085596.png

按照文档的意思,我们不需要关心数据解压缩的问题,获取到的应该就是解压缩后的数据,这与我们看到的不符,这里我的一位同事发现这是mcq队列实现的一个坑,没有实现对压缩数据的支持

20180604152808669332664.png