## 実行時設定

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` です。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open