首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >警告: Memcached::getMulti():无法取消序列化值,不支持ig二进制

警告: Memcached::getMulti():无法取消序列化值,不支持ig二进制
EN

Stack Overflow用户
提问于 2016-02-04 12:04:50
回答 1查看 3.3K关注 0票数 1

我在我的Drupal站点上成功地使用memcached (通过OS上的brew安装)已经有几个月了。

但是,在很长的页面加载之后,这个错误就会突然发生:

(!)警告: Memcached::getMulti():无法取消序列化值,在第375行的sites/all/modules/contrib/memcache/dmemcache.inc中不支持ig二进制

为什么会发生这种情况,为什么我需要igbinary (我认为我有),以及如何修复它?

看来我已经安装了php56-igbinary

代码语言:javascript
复制
$ php -i | grep igbinary
Additional .ini files parsed => /usr/local/etc/php/5.6/conf.d/ext-igbinary.ini,
igbinary
igbinary support => enabled
igbinary version => 1.2.1
igbinary APC serializer ABI => no
igbinary session support => yes
igbinary.compact_strings => On => On
igbinary support => yes
memcached.serializer => igbinary => igbinary
Registered serializer handlers => php_serialize php php_binary wddx igbinary 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-04 12:04:50

is二进制是标准PHP序列化程序的替代,它通常需要大量的时间和空间来存储文本表示形式的数据。由于对该扩展的支持,在使用memcached或类似的基于内存的存储(例如Redis)时节省了大量费用,因为所有PHP数据结构都是以紧凑的二进制形式存储的。

我所处理的问题发生了,因为有两个PHP版本,一个来自具有igbinary (例如drush)的CLI,另一个用于Apache/MAMP,没有igbinary

代码语言:javascript
复制
$ /Applications/MAMP/bin/php/php5.6.10/bin/php -i | grep igbinary
igbinary support => no

因此,由于某些原因,一些对象是使用igbinary缓存的,然后如果没有这种支持,它就无法被PHP取消序列化。

MAMP似乎没有为他们的PHP包提供ig二进制支持,因此解决方案包括:

  • 扩展需要手动编译并加载到MAMP (--enable-memcached-igbinary)中,
  • 禁用PHP中的igbinary (不推荐),这样它就不会与Apache发生冲突,
  • 继续重新启动memcached,例如brew services restart memcached (OS )
  • 使用PHP内置服务器,它支持ig二进制文件,如:php -S localhost:8888
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35200566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档