警告:Memcached::getMulti():无法反序列化值,不支持 igbinary
Warning: Memcached::getMulti(): could not unserialize value, no igbinary support
我已经在我的 Drupal 站点上成功使用 memcached(通过 brew
在 OS X 上安装)几个月了。
然而,这个错误在页面加载很长时间后突然出现:
( ! ) Warning: Memcached::getMulti(): could not unserialize value, no igbinary support in sites/all/modules/contrib/memcache/dmemcache.inc on line 375
为什么会这样,为什么我需要 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
Igbinary 是标准 PHP serializer 的替代品,标准 PHP serializer 通常会消耗大量时间并且 space 以文本表示形式存储数据。有了对该扩展的支持,在使用 memcached 或类似的基于内存的存储(例如 Redis)时,节省是显着的,因为所有 PHP 数据结构都以紧凑的二进制形式存储。
我处理的问题发生了,因为有两个 PHP 版本,一个来自 CLI,它具有 igbinary 支持(例如 drush
使用),另一个 [=38 使用=] 没有 igbinary
:
$ /Applications/MAMP/bin/php/php5.6.10/bin/php -i | grep igbinary
igbinary support => no
所以出于某种原因,一些对象使用 PHP 和 igbinary
进行缓存,然后在没有该支持的情况下无法被 PHP 反序列化。
MAMP 似乎不为其 PHP 包提供 igbinary 支持,因此解决方案包括:
- 扩展需要手动编译并加载到 MAMP (
--enable-memcached-igbinary
),
- 在PHP CLI 中禁用
igbinary
(不推荐),这样它就不会与Apache 冲突,
- 继续重启
memcached
,例如brew services restart memcached
(OS X)
- 使用支持 igbinary 的 PHP 内置服务器,例如:
php -S localhost:8888
我已经在我的 Drupal 站点上成功使用 memcached(通过 brew
在 OS X 上安装)几个月了。
然而,这个错误在页面加载很长时间后突然出现:
( ! ) Warning: Memcached::getMulti(): could not unserialize value, no igbinary support in sites/all/modules/contrib/memcache/dmemcache.inc on line 375
为什么会这样,为什么我需要 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
Igbinary 是标准 PHP serializer 的替代品,标准 PHP serializer 通常会消耗大量时间并且 space 以文本表示形式存储数据。有了对该扩展的支持,在使用 memcached 或类似的基于内存的存储(例如 Redis)时,节省是显着的,因为所有 PHP 数据结构都以紧凑的二进制形式存储。
我处理的问题发生了,因为有两个 PHP 版本,一个来自 CLI,它具有 igbinary 支持(例如 drush
使用),另一个 [=38 使用=] 没有 igbinary
:
$ /Applications/MAMP/bin/php/php5.6.10/bin/php -i | grep igbinary
igbinary support => no
所以出于某种原因,一些对象使用 PHP 和 igbinary
进行缓存,然后在没有该支持的情况下无法被 PHP 反序列化。
MAMP 似乎不为其 PHP 包提供 igbinary 支持,因此解决方案包括:
- 扩展需要手动编译并加载到 MAMP (
--enable-memcached-igbinary
), - 在PHP CLI 中禁用
igbinary
(不推荐),这样它就不会与Apache 冲突, - 继续重启
memcached
,例如brew services restart memcached
(OS X) - 使用支持 igbinary 的 PHP 内置服务器,例如:
php -S localhost:8888