我在我的Drupal站点上成功地使用memcached (通过OS上的brew安装)已经有几个月了。
但是,在很长的页面加载之后,这个错误就会突然发生:
(!)警告: Memcached::getMulti():无法取消序列化值,在第375行的sites/all/modules/contrib/memcache/dmemcache.inc中不支持ig二进制
为什么会发生这种情况,为什么我需要igbinary (我认为我有),以及如何修复它?
看来我已经安装了php56-igbinary。
$ 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 发布于 2016-02-04 12:04:50
is二进制是标准PHP序列化程序的替代,它通常需要大量的时间和空间来存储文本表示形式的数据。由于对该扩展的支持,在使用memcached或类似的基于内存的存储(例如Redis)时节省了大量费用,因为所有PHP数据结构都是以紧凑的二进制形式存储的。
我所处理的问题发生了,因为有两个PHP版本,一个来自具有igbinary (例如drush)的CLI,另一个用于Apache/MAMP,没有igbinary。
$ /Applications/MAMP/bin/php/php5.6.10/bin/php -i | grep igbinary
igbinary support => no因此,由于某些原因,一些对象是使用igbinary缓存的,然后如果没有这种支持,它就无法被PHP取消序列化。
MAMP似乎没有为他们的PHP包提供ig二进制支持,因此解决方案包括:
--enable-memcached-igbinary)中,igbinary (不推荐),这样它就不会与Apache发生冲突,memcached,例如brew services restart memcached (OS )php -S localhost:8888https://stackoverflow.com/questions/35200566
复制相似问题