Я использую 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, поэтому решения включают в себя:
--enable-memcached-igbinary
), igbinary
в PHP CLI (не рекомендуется), поэтому он не будет конфликтовать с Apache, memcached
, например, brew services restart memcached
(OS X) php -S localhost:8888