Как включить первый запуск с memcached
У меня есть 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
thats вопрос. Как ни странно, как вы можете видеть под заголовком apc, говорится: Serialization Support php, igbinary
.
Так кто-нибудь знает, почему я не могу включить igbinary для memcached?
Спасибо!
Ответы
Ответ 1
Вы можете проверить константу 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 extension.
Тип: целое, по умолчанию: Memcached:: SERIALIZER_PHP.
Memcached:: HAVE_IGBINARY
Указывает, доступна ли поддержка универсального сериализатора.
Тип: boolean.
Ответ 2
Вы не можете включить его, потому что 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.
Ответ 3
Если вы работаете на Mac и используете MacPorts, вы можете установить расширение php5-memcached с помощью igbinary с помощью этой команды:
sudo port install php5-memcached +igbinary
+igbinary
указывает вариант порта php5-memcached
.
Эта команда установит расширение для memcached с поддержкой igbinary на вашем Mac.
Подробнее о вариантах портов вы можете узнать здесь: http://guide.macports.org/#using.variants