Как включить igbinary при первой установке memcached - PullRequest
10 голосов
/ 26 июля 2011

У меня memcached установлен с libmemcached. Также я установил igbinary.

Это мой php.ini:

; Directory in which the loadable extensions (modules) reside.
;extension_dir = "./"
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/"

extension=apc.so
apc.enabled=1
apc.shm_size=128M

extension=memcached.so
session.save_handler=memcached
session.save_path="127.0.0.1:11211"

extension=igbinary.so
session.serialize_handler=igbinary
igbinary.compact_strings=On

.

Когда я запускаю phpinfo (), я вижу, что igbinary включен, но не для memcached:

apc
Serialization Support   php, igbinary 

igbinary
igbinary support    enabled
igbinary version    1.1.1
igbinary APC serializer ABI     0

Directive   Local Value Master Value
igbinary.compact_strings    On  On

Phpinfo () о memcached:

memcached
memcached support   enabled
Version     1.0.2
libmemcached version    0.51
Session support     yes
igbinary support    no 

Последняя строка: igbinary support вот в чем вопрос. Как ни странно, как вы можете видеть под заголовком apc, там указано: Serialization Support php, igbinary.

Так кто-то знает, почему я не могу включить igbinary для memcached ?

Спасибо!

Ответы [ 3 ]

11 голосов
/ 26 декабря 2012

Вы не можете включить его, потому что PECL memcached не был собран с '--enable-memcached-igbinary'

PECL install не принимает это как флаг, поэтому вот как вы можете построить pecl memcachedс ним (следующий пример находится в Ubuntu от имени root)

#if you have libmemcached-dev < 1.0.X need to run: sudo apt-get purge libmemcached-dev
apt-get install libevent-dev
pecl install igbinary    

#cant do sudo pecl install memcached-2.1.0 cuz it wont let me use igbinary
#compiling manually per http://www.neanderthal-technology.com/2011/11/ubuntu-10-install-php-memcached-with-igbinary-support/

#install libmemcached v 1.0.X for pecl memcached 2.1.0
cd /tmp
libmemcached_ver="1.0.15"
wget https://launchpad.net/libmemcached/1.0/${libmemcached_ver}/+download/libmemcached-${libmemcached_ver}.tar.gz
tar xzvf libmemcached-${libmemcached_ver}.tar.gz
cd libmemcached-${libmemcached_ver}/
./configure
make
make install
cd ../
rm -r libmemcached-${libmemcached_ver}

#install memcached PECL extension
pecl_memcached_ver="2.1.0"
pecl download memcached-${pecl_memcached_ver}
tar xzvf memcached-${pecl_memcached_ver}.tgz
cd memcached-${pecl_memcached_ver}/
phpize
./configure --enable-memcached-igbinary
make
make install
cd ..
rm -r memcached-${pecl_memcached_ver}

echo "extension=igbinary.so" > /etc/php5/fpm/conf.d/igbinary.ini
echo "extension=memcached.so" > /etc/php5/fpm/conf.d/memcached.ini

#now restart your PHP server

Загрузите страницу phpinfo (), и теперь вы должны увидеть 'igbinary support: yes' в разделе memcached.

10 голосов
/ 26 июля 2011

Вы можете проверить константу Memcached :: HAVE_IGBINARY , чтобы увидеть, было ли ваше расширение memcached скомпилировано с использованием - enable-memcached-igbinary .

Источник: http://php.net/manual/en/memcached.constants.php

Memcached :: OPT_SERIALIZER

Указывает сериализатор, используемый для сериализации нескалярных значений.Допустимыми сериализаторами являются Memcached :: SERIALIZER_PHP или Memcached :: SERIALIZER_IGBINARY.Последнее поддерживается только тогда, когда memcached сконфигурирован с параметром --enable-memcached-igbinary и загружено расширение igbinary.

Тип: целое, по умолчанию: Memcached :: SERIALIZER_PHP.

Memcached :: HAVE_IGBINARY

Указывает, доступна ли поддержка igbinary сериализатора.

Тип: логическое значение.

1 голос
/ 14 декабря 2011

Если вы работаете на Mac и используете MacPorts, вы можете установить расширение php5-memcached с поддержкой igbinary с помощью этой команды:

sudo port install php5-memcached +igbinary

+igbinary указывает вариант порта php5-memcached.

Эта команда установит расширение memcached с поддержкой igbinary на ваш Mac.

Подробнее о вариантах портов вы можете прочитать здесь: http://guide.macports.org/#using.variants

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...