Предупреждение: Memcached :: getMulti (): не удалось выполнить инициализацию значения, без поддержки

Я использую memcached (установленный через brew на OS X) на моем сайте Drupal успешно уже несколько месяцев.

Однако эта ошибка начинает происходить из-за синего цвета после очень длительной загрузки страницы:

(!) Предупреждение: Memcached :: getMulti (): не удалось выполнить несериализацию значения, без igbinary поддержки в сайтах / all / modules / contrib / memcache / dmemcache.inc в строке 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, который обычно потребляет много времени и пространства, сохраняя данные в текстовом представлении. При поддержке этого расширения экономия значительна при использовании memcached или подобных хранилищ на основе памяти (например, Redis), поскольку все структуры данных PHP хранятся в компактной двоичной форме.

Проблема, с которой я справлялся, произошла, потому что было две версии PHP, одна из которых использовалась из CLI, которая имела поддержку в виде значков (например, используется drush ), а другая, используемая Apache / MAMP, не имела igbinary :

 $ /Applications/MAMP/bin/php/php5.6.10/bin/php -i | grep igbinary igbinary support => no 

Поэтому по какой-то причине некоторые объекты были кэшированы с использованием PHP с помощью igbinary , тогда он не смог быть неэтериализован PHP без этой поддержки.

Кажется, что MAMP не предоставляет igbinary поддержку для своего пакета PHP, поэтому решения включают в себя:

  • расширение необходимо скомпилировать вручную и загрузить в MAMP ( --enable-memcached-igbinary ),
  • отключить igbinary в PHP CLI (не рекомендуется), поэтому он не будет конфликтовать с Apache,
  • продолжить перезапуск memcached , например, brew services restart memcached (OS X)
  • вместо этого используйте встроенный сервер PHP, который поддерживает igbinary, например: php -S localhost:8888