11

libmemcachedmemcachedでインストールしました。また、インストールし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

memcached に関する Phpinfo():

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

memcachedの igbinary を有効にできない理由を誰かが知っていますか?

ありがとう!

4

3 に答える 3

12

PECL memcached が「--enable-memcached-igbinary」でビルドされていないため、有効にできません

PECL のインストールではこれをフラグとして使用しないため、これを使用して 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() ページをロードすると、memcached セクションの下に 'igbinary support: yes' が表示されるはずです。

于 2012-12-26T17:18:00.617 に答える
11

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 シリアライザーのサポートが利用可能かどうかを示します。

タイプ: ブール値。

于 2011-07-26T14:03:44.377 に答える
1

Mac で MacPorts を使用している場合は、次のコマンドを使用して、igbinary をサポートする php5-memcached 拡張機能をインストールできます。

sudo port install php5-memcached +igbinary

は、ポートの+igbinaryバリアントを指定しphp5-memcachedます。

このコマンドは、igbinary 対応の memcached 拡張機能を Mac にインストールします。

ポートバリアントの詳細については、http: //guide.macports.org/#using.variantsを参照してください。

于 2011-12-14T14:32:14.227 に答える