CakeFest 2024: The Official CakePHP Conference

実行時設定

php.ini の設定により動作が変化します。

Memcached 設定オプション
名前 デフォルト 変更可能 変更履歴
memcached.sess_locking On INI_ALL memcached 0.1.0 以降で利用可能です。
memcached.sess_consistent_hash On INI_ALL memcached 2.1.0 以降で利用可能です。memcached 3.0.0 以降は、デフォルト値は On です。
memcached.sess_binary Off INI_ALL memcached 2.0.0 以降で利用可能です。memcached 3.0.0 以降は、memcached.sess_binary_protocol に置き換えられました。
memcached.sess_lock_wait 150000 INI_ALL memcached 0.1.0 以降で利用可能ですが、memcached 3.0.0 以降では削除されています。
memcached.sess_prefix memc.sess.key. INI_ALL memcached 0.1.0 以降で利用可能です。
memcached.sess_number_of_replicas 0 INI_ALL memcached 2.1.0 以降で利用可能です。
memcached.sess_randomize_replica_read Off INI_ALL memcached 2.1.0 以降で利用可能です。
memcached.sess_remove_failed On INI_ALL memcached 2.1.0 以降で利用可能です。memcached 3.0.0 以降は、memcached.sess_remove_failed_servers に置き換えられました。
memcached.compression_type fastlz INI_ALL memcached 0.1.0 以降で利用可能です。
memcached.compression_factor 1.3 INI_ALL memcached 0.1.0 以降で利用可能です。
memcached.compression_threshold 2000 INI_ALL memcached 0.1.0 以降で利用可能です。
memcached.serializer igbinary INI_ALL memcached 0.1.0 以降で利用可能です。
memcached.use_sasl Off INI_ALL memcached 2.2.0 以降で利用可能ですが、memcached 3.0.0 以降では削除されています。
memcached.default_binary_protocol Off INI_ALL memcached 3.0.0 以降で利用可能です。
memcached.default_connect_timeout 0 INI_ALL memcached 3.0.0 以降で利用可能です。
memcached.default_consistent_hash Off INI_ALL memcached 3.0.0 以降で利用可能です。
memcached.sess_binary_protocol On INI_ALL memcached 3.0.0 以降で利用可能です。memcached.sess_binary を置き換えるものです。
memcached.sess_connect_timeout 1000 INI_ALL memcached 2.2.0 以降で利用可能です。
memcached.sess_consistent_hash_type ketama INI_ALL memcached 3.1.0 以降で利用可能です。
memcached.sess_lock_expire 0 INI_ALL memcached 2.2.0 以降で利用可能です。
memcached.sess_lock_retries 5 INI_ALL memcached 3.0.0 以降で利用可能です。
memcached.sess_lock_wait_max 150 INI_ALL memcached 3.0.0 以降で利用可能です。デフォルト値は memcached 3.1.0 以降は 150 です (それより前のバージョンでは 2000 でした)。
memcached.sess_lock_wait_min 150 INI_ALL memcached 3.0.0 以降で利用可能です。デフォルト値は memcached 3.1.0 以降は 150 です (それより前のバージョンでは 1000 でした)。
memcached.sess_persistent Off INI_ALL memcached 3.0.0 以降で利用可能です。
memcached.sess_remove_failed_servers Off INI_ALL memcached 3.0.0 以降で利用可能です。memcached.sess_remove_failed を置き換えるものです。
memcached.sess_server_failure_limit 0 INI_ALL memcached 3.0.0 以降で利用可能です。
memcached.sess_sasl_password null INI_ALL memcached 2.2.0 以降で利用可能です。
memcached.sess_sasl_username null INI_ALL memcached 2.2.0 以降で利用可能です。
memcached.store_retry_count 0 INI_ALL memcached 2.2.0 以降で利用可能です。 memcached 3.2.0 以降では、デフォルト値は 0 です。 (それより前のバージョンでは、2 でした)

以下に設定ディレクティブに関する 簡単な説明を示します。

memcached.sess_locking bool

セッション単位のロックを使う。設定値として On, Off が使えます。デフォルトは On です。

memcached.sess_consistent_hash bool

On にすると、セッション管理に コンシステント・ハッシュ法 (libketama) を使います。 コンシステント・ハッシュ法を使うと、既存のキーに煩わされることなく ノードを追加したり削除したりできます。デフォルトは On です。

memcached.sess_binary bool

セッション管理にmemcachedのバイナリプロトコルを使います。 Libmemcached のレプリカはこのバイナリモードが有効になっている場合にのみ動作します。 デフォルトは Off です。

memcached.sess_lock_wait int

セッションデータを書き込むときの spin lock の待ち時間をマイクロ秒単位で指定します。 この値を設定するときは注意してください。数値の値が設定できますが、 0 はデフォルトの値を使うと解釈されます。負の値を設定するとロックを掛けようと試みる 回数が減ってしまいます。デフォルトは 150000 です。

memcached.sess_prefix string

セッション管理に使うキーのプレフィックスです。 219バイト以下の文字列が使えます。デフォルトの値は memc.sess.key です。

memcached.sess_number_of_replicas int

データを書き込む、 追加の memcached サーバーの数を指定します。 これは、libmemcached が "poor man's HA" と呼んでいるものです。 この値が0より大きく、sess_remove_failed_servers が 有効な場合、 memcached サーバーがダウンした時にセッションはレプリカを使って継続されます。 しかし、ダウンした memcached サーバーが再び復帰した場合は、 セッションは古いデータを持つセッションを読みとる場合もありますし、 データを全く読み取れない場合もあります。デフォルト値は 0 です。

memcached.sess_randomize_replica_read bool

複数のサーバーのレプリカからセッションデータを読み取る際、読み取りを始める最初のサーバーをランダムに選ぶかを指定します。

memcached.sess_remove_failed int

通信に失敗した memcached サーバーを自動的にサーバーリストから外すかを指定します。

memcached.compression_type string

圧縮のタイプを指定します。fastlz, zlib が指定できます。デフォルトは fastlz です。

memcached.compression_factor float

圧縮係数。圧縮後のサイズが圧縮係数の限界値を超えていた場合にだけ値を圧縮して保存します。 元のサイズ > 圧縮後のサイズ * 圧縮係数の場合にだけ値を圧縮して保存します。 デフォルト値は 1.3 (23%強の圧縮率) です。

memcached.compression_threshold int

圧縮のしきい値。このしきい値を下回るシリアライズ済みの値は圧縮しません。 デフォルトは 2000 バイトです。

memcached.serializer string

新しい memcached オブジェクトのデフォルトのシリアライザを設定します。設定値として php, igbinary, json, json_array, msgpack が使えます。

json

標準的な JSON を使います。このシリアライザは高速でコンパクトですが、UTF-8 でエンコードされたデータでしか動作しませんし、完全なシリアライズを実装していません。詳細は JSON拡張モジュール を参照ください。 memcached 0.2.0 以降で利用可能です。

json_array

json と同じですが、シリアライズしたデータを配列に入れます。 memcached 2.0.0 以降で利用可能です。

php

標準的なPHPのシリアライザです。

igbinary

バイナリデータのシリアライザです。 memcached 0.1.4 以降で利用可能です。

msgpack

言語に依存しない、バイナリデータのシリアライザです。 memcached 2.2.0 以降で利用可能です。

デフォルトは 利用可能な場合 igbinary です。 igbinary が利用できない場合は msgpack が(利用可能な場合のみ) デフォルトになります。 いずれも利用できない場合は、php がデフォルトになります。

memcached.use_sasl bool

接続時に SASL認証 を使います。設定値として On, Off が使えます。デフォルトは Off です。

memcached.default_binary_protocol bool

新しい接続で使う、デフォルトの memcached プロトコルを設定します (セッションで使う memcached プロトコルを設定するには、 memcached.sess_binary_protocol を代わりに使って下さい)。 On にすると、memcached バイナリプロトコルをデフォルトで使います。 Off にすると、memcached テキストプロトコルを使います。 デフォルトは Off です。

memcached.default_connect_timeout int

新しい接続で使う、デフォルトの memcached の接続タイムアウト値を設定します (セッションで使う memcached の接続タイムアウト値を設定するには、 memcached.sess_connect_timeout を代わりに使って下さい)。 ノンブロッキングモードの場合、この値は ソケット接続中のタイムアウトの値をミリ秒単位で変更します。 -1 を指定すると、タイムアウトしません。 0 を指定すると、memcached ライブラリのデフォルトの接続タイムアウト値を使います。 デフォルトは 0 です。

memcached.default_consistent_hash bool

新しい接続で使う、デフォルトの コンシステント・ハッシュ法を指定します (セッションで使う コンシステント・ハッシュ法 を設定するには、 memcached.sess_consistent_hash を代わりに使って下さい)。 On にすると、セッション管理に コンシステント・ハッシュ法 (libketama) を使います。 コンシステント・ハッシュ法を使うと、既存のキーに煩わされることなく キャッシュノードを追加したり削除したりできます。デフォルトは Off です。

memcached.sess_binary_protocol bool

memcached でセッション管理を行う場合に、 memcached text プロトコルではなく memcached バイナリプロトコル を使うように指定します。 これは、libmemcached レプリカのバイナリモードが有効になっている場合にのみ有効です。 バイナリプロトコルが無効な場合にのみ動作するプロキシ(たとえば、twemproxy) もあります。 デフォルト値は libmemcached 1.0.18 以降は On です。 それより前のバージョンでは Off になっています。

注意: php-memcached の以前のバージョンでは、この設定は memcached.sess_binary と呼ばれていました。

memcached.sess_connect_timeout int

memcached の接続タイムアウト値を指定します。 ノンブロッキングモードの場合、この値は ソケット接続中のタイムアウトの値をミリ秒単位で変更します。 -1 を指定すると、タイムアウトしません。

memcached.sess_consistent_hash_type string

Memcached のセッション管理で使う、コンシステント・ハッシュ法を指定します。 ketama を指定すると、セッション管理にコンシステント・ハッシュ(libketama) を使います。 これは php-memcached 3.x のデフォルトです。 ketama_weighted を指定すると、重み付きのコンシステント・ハッシュ(libketama) をセッション管理に使います。 デフォルトは ketama です。 php-memcached 3.0 より前のバージョンでは、デフォルトは ketama_weighted でした。

memcached.sess_lock_expire int

ロックが解放されるまでの時間を秒単位で指定します。 0 を指定すると、デフォルトの動作になります。 つまり、PHP の max_execution_time の値を使います。 デフォルト値は 0 です。

memcached.sess_lock_retries int

セッションのロックを取得するためのリトライ回数を指定します。 この値には、最初の試行は含まれません。 デフォルト値は 5 です。

memcached.sess_lock_wait_max int

セッションのロック取得を試みる際に、 それぞれの試行の間に待つ最大の時間をミリ秒単位で指定します。 デフォルト値は 150 です。

memcached.sess_lock_wait_min int

セッションのロック取得を試みる際に、 それぞれの試行の間に待つ最小の時間をミリ秒単位で指定します。 ロック取得のリトライを行うたびに、memcached.sess_lock_wait_max に達するまで、 現在のリトライ時間を2倍して待ちます。 その後は、memcached.sess_lock_wait_max の間待ちます。 デフォルト値は 150 です。

memcached.sess_persistent bool

スクリプトの実行が終了した後、session.save_path に対応する memcached 接続を再利用するかどうかを指定します。 特定の設定 (たとえば SASL 設定や, sess_binary_protocol) がリクエスト間で上書きされる場合は、 この設定を使ってはいけません。 デフォルト値は Off です。

memcached.sess_remove_failed_servers bool

ダウンした memcahced サーバーを自動的に削除する機能を有効にします。 デフォルト値は Off です。

注意: 前のバージョンでは、この設定は memcached.sess_remove_failed と呼ばれていました。

memcached.sess_server_failure_limit int

指定した回数接続が失敗した場合に、サーバーを削除する機能を有効にします。 デフォルト値は 0 です。

memcached.sess_sasl_password string

セッションの SASL パスワードを指定します。 SASL を有効にするには、ユーザー名とパスワードを両方指定する必要があります。

memcached.sess_sasl_username string

セッションの SASL ユーザ名を指定します。 SASL を有効にするには、ユーザー名とパスワードを両方指定する必要があります。

memcached.store_retry_count int

store コマンドが失敗した場合に、行うリトライの回数を指定します。 この仕組みを使うと、 複数サーバー構成で set/increment/decrement/setMulti 操作が失敗した場合に、 セカンダリサーバーへ透過的なフェイルオーバーを行うことが出来ます。 デフォルト値は 2 です。

add a note

User Contributed Notes 3 notes

up
5
senz
10 years ago
In case, you are wondering why your sessions are "killed" after 1440 seconds, take a look at session.gc_maxlifetime. It's value is used in memcached expiration field according to memcache protocol rules. Also, do not forget about cookie expiration time
up
1
Piotr Gabryjeluk
6 years ago
Apparently in version 3.0.3 the default for memcached.sess_binary_protocol in TRUE. Also note the key is memcached.sess_binary_protocol, not memcached.sess.

Setting memcached.sess_binary_protocol to FALSE is required if you want to save the session to memcached through twemproxy.
up
1
adolfoabegg at gmail dot com
12 years ago
you can get the list of the possible options for the memcached.ini configuration file here:
https://github.com/php-memcached-dev/php-memcached/blob/master/memcached.ini
To Top