PHP Conference Nagoya 2025

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。

Memcached::OPT_COMPRESSION

ペイロードの圧縮を有効あるいは無効にします。有効にすると、 一定の閾値 (現在は 100 バイト) を超える長さのアイテムは 格納時に圧縮され、取得時に伸長されます。この操作は透過的に行われます。

型: bool、デフォルト: true

Memcached::OPT_SERIALIZER

非スカラ値のシリアライズに使うシリアライザを指定します。 有効なシリアライザは Memcached::SERIALIZER_PHP あるいは Memcached::SERIALIZER_IGBINARY です。 後者のシリアライザをサポートするのは memcached の configure 時に --enable-memcached-igbinary オプションを指定して igbinary 拡張を読み込んだときだけです。

型: int、デフォルト: Memcached::SERIALIZER_PHP

Memcached::SERIALIZER_PHP

デフォルトの PHP シリアライザ。

Memcached::SERIALIZER_IGBINARY

» igbinary シリアライザ。 テキスト表現ではなく、PHP のデータ構造をコンパクトなバイナリ形式で格納します。 その結果、容量と時間を節約できます。

Memcached::SERIALIZER_JSON

JSON シリアライザ。

Memcached::OPT_PREFIX_KEY

これを使うと、アイテムのキーに「ドメイン」を作成できます。 ここで指定した値がキーの名前の先頭に付きます。 128 文字より長くはできず、 ここで指定した値の分だけキーに指定できる長さが小さくなります。 プレフィックスが付くのはアイテムのキーだけであり、 サーバーのキーには付きません。

型: string、デフォルト: ""

Memcached::OPT_HASH

アイテムのキーに使うハッシュアルゴリズムを指定します。 有効な値は、定数 Memcached::HASH_* のいずれかです。 どのハッシュアルゴリズムにもそれぞれ利点や欠点があります。 よくわからない場合やあまり難しく考えたくない場合はデフォルトで進めましょう。

型: int、デフォルト: Memcached::HASH_DEFAULT

Memcached::HASH_DEFAULT

デフォルトのハッシュアルゴリズム (Jenkins one-at-a-time)。

Memcached::HASH_MD5

MD5 ハッシュアルゴリズム。

Memcached::HASH_CRC

CRC ハッシュアルゴリズム。

Memcached::HASH_FNV1_64

FNV1_64 ハッシュアルゴリズム。

Memcached::HASH_FNV1A_64

FNV1_64A ハッシュアルゴリズム。

Memcached::HASH_FNV1_32

FNV1_32 ハッシュアルゴリズム。

Memcached::HASH_FNV1A_32

FNV1_32A ハッシュアルゴリズム。

Memcached::HASH_HSIEH

Hsieh ハッシュアルゴリズム。

Memcached::HASH_MURMUR

Murmur ハッシュアルゴリズム。

Memcached::OPT_DISTRIBUTION

アイテムのキーをサーバーに振り分ける方式を指定します。 現在サポートしている方式は、モジュロとコンシステント・ハッシュの二種類です。 コンシステント・ハッシュのほうがよりうまく分散させられ、 サーバーをクラスタに追加するときにもキャッシュのロスを最小限に抑えられます。

型: int、デフォルト: Memcached::DISTRIBUTION_MODULA

Memcached::DISTRIBUTION_MODULA

モジュロベースのキー分散アルゴリズム。

Memcached::DISTRIBUTION_CONSISTENT

コンシステント・ハッシュを使ったキー分散アルゴリズム (libketama を利用)。

Memcached::OPT_LIBKETAMA_COMPATIBLE

libketama 風の挙動との互換性を有効あるいは無効にします。 有効にすると、アイテムのキーのハッシュアルゴリズムは MD5、 そして分散方式は重み付きコンシステント・ハッシュになります。 これを使うと、他の libketama ベースのクライアント (Python や Ruby など) を同じサーバー設定で使え、キーも透過的にアクセスできるようになるので有用です。

注意:

コンシステント・ハッシュを使うときは、このオプションを有効にしておくことを強く推奨します。 将来のリリースでは、これはデフォルトで有効になる予定です。

型: bool、デフォルト: false

Memcached::OPT_BUFFER_WRITES

バッファ入出力を有効あるいは無効にします。 バッファ入出力を有効にすると、ストレージへのコマンドを送信する代わりに 「バッファ」に向けるようになります。 データを取得するアクションを実行すると、このバッファをリモート接続に送信します。 接続を終了したり閉じたりしたときも、バッファに入ったデータをリモート接続に送信します。

型: bool、デフォルト: false

Memcached::OPT_BINARY_PROTOCOL

バイナリプロトコルを使えるようにします。 既に開いている接続ではこのオプションを切り替えられないことに注意しましょう。

型: bool、デフォルト: false

Memcached::OPT_NO_BLOCK

非同期入出力を有効あるいは無効にします。 これは、ストレージ関数で使える転送の中でも最も高速なものです。

型: bool、デフォルト: false

Memcached::OPT_NOREPLY

ストレージへのコマンド (set, add, replace, append, prepend, delete, increment, decrement など) の実行結果を無視するか、しないかを指定します。 ストレージへのコマンドは、送信された後、応答を待つのに時間を使いません。 (応答がない場合もあります) Memcached::get() のように、 データを取得するコマンドは、この設定による影響を受けません。

型: bool、デフォルト: false.

Memcached::OPT_TCP_NODELAY

ソケット接続用のno-delay機能 (環境によってはそのほうが高速化する) を有効あるいは無効にします。

型: bool、デフォルト: false

Memcached::OPT_SOCKET_SEND_SIZE

バッファに送信するソケットの最大のバイト数。

型: int、デフォルト: プラットフォームやカーネルの設定によって異なる

Memcached::OPT_SOCKET_RECV_SIZE

ソケットの受信バッファの最大のバイト数。

The maximum socket receive buffer in bytes.

型: int、デフォルト: プラットフォームやカーネルの設定によって異なる

Memcached::OPT_CONNECT_TIMEOUT

非ブロックモードの場合、ここにはソケット接続のタイムアウト値をミリ秒単位で指定します。

型: int、デフォルト: 1000

Memcached::OPT_RETRY_TIMEOUT

接続に失敗したときに、どれだけ失敗するまで接続を再試行するかどうかを、秒数で表す。

型: int、デフォルト: 0

Memcached::OPT_SEND_TIMEOUT

ソケットの送信タイムアウトをマイクロ秒で指定します。 非ブロックモードの入出力を使えない場合でも、 これを使ってデータ送信のタイムアウトを指定できます。

型: int、デフォルト: 0

Memcached::OPT_RECV_TIMEOUT

ソケットの読み込みタイムアウトをマイクロ秒で指定します。 非ブロックモードの入出力を使えない場合でも、 これを使ってデータ読み込みのタイムアウトを指定できます。

型: int、デフォルト: 0

Memcached::OPT_POLL_TIMEOUT

接続をポーリングする際のタイムアウト時間をミリ秒単位で指定します。

型: int、デフォルト: 1000

Memcached::OPT_CACHE_LOOKUPS

DNS ルックアップのキャッシュを有効あるいは無効にします。

型: bool、デフォルト: false

Memcached::OPT_SERVER_FAILURE_LIMIT

サーバーへの接続の最大試行回数を指定します。 指定した回数だけ接続の失敗が続くと、サーバーが削除されます。

型: int、デフォルト: 0

Memcached::HAVE_IGBINARY

igbqinary シリアライザのサポートが有効かどうかを示します。

型: bool

Memcached::HAVE_JSON

JSON シリアライザのサポートが有効かどうかを示します。

型: bool

Memcached::HAVE_MSGPACK

msgpack シリアライザのサポートが有効かどうかを示します。

Type: bool

Memcached 3.0.0 以降で使用可能です。

Memcached::HAVE_SESSION

Type: bool

Memcached 3.0.0 以降で使用可能です。

Memcached::HAVE_SASL

Type: bool

Memcached 3.0.0 以降で使用可能です。

Memcached::GET_EXTENDED

Memcached::get(), Memcached::getMulti(), Memcached::getMultiByKey() が CASトークンの値も返すかを保証するフラグ

Memcached 3.0.0 以降で使用可能です。

Memcached::GET_PRESERVE_ORDER

Memcached::getMulti()Memcached::getMultiByKey() のフラグで、 リクエストしたときと同じ順番でキーを返すことを示します。 存在しないキーを指定すると、デフォルト値の NULL を返します。

Memcached::RES_SUCCESS

実行しようとした操作が成功したことを示します。

Memcached::RES_FAILURE

実行しようとした操作が何らかの点で失敗したことを示します。

Memcached::RES_HOST_LOOKUP_FAILURE

DNSの名前解決が失敗したことを示します。

Memcached::RES_UNKNOWN_READ_FAILURE

ネットワーク経由でのデータの読み取りに失敗したことを示します。

Memcached::RES_PROTOCOL_ERROR

memcached プロトコル内で不正なコマンドが実行されたことを示します。

Memcached::RES_CLIENT_ERROR

クライアント側でエラーが起きたことを示します。

Memcached::RES_SERVER_ERROR

サーバー側でエラーが起きたことを示します。

Memcached::RES_WRITE_FAILURE

ネットワーク経由でのデータの書き込みに失敗したことを示します。

Memcached::RES_DATA_EXISTS

比較と交換に失敗したことを示します。格納しようとしたアイテムは、 最後に取得したあとで変更されています。

Memcached::RES_NOTSTORED

アイテムが格納されなかったが、その原因はエラーではないということを示します。 これは通常、"add" や "replace" コマンドの要件を満たさなかったか あるいはアイテムが削除キューに入っていることを意味します。

Memcached::RES_NOTFOUND

このキーのアイテムが ("get" や "cas" の操作で) 見つからなかったことを示します。

Memcached::RES_PARTIAL_READ

ネットワーク経由でのデータの読み取りが一部失敗したことを示します。

Memcached::RES_SOME_ERRORS

multi-get を実行中にエラーが発生したことを示します。

Memcached::RES_NO_SERVERS

サーバーリストが空であることを示します。

Memcached::RES_END

結果セットの末尾を示します。

Memcached::RES_ERRNO

システムエラーを示します。

Memcached::RES_BUFFERED

実行している操作がバッファリングされていることを示します。

Memcached::RES_TIMEOUT

実行がタイムアウトしたことを示します。

Memcached::RES_BAD_KEY_PROVIDED

不正なキーを与えたことを示します。

Memcached::RES_CONNECTION_SOCKET_CREATE_FAILURE

ネットワークソケットの作成が失敗したことを示します。

Memcached::RES_PAYLOAD_FAILURE

ペイロードに関するエラー: つまり、値を シリアライズ/復元 したり、圧縮/解凍 することができなかったことを示します。

Memcached::RES_AUTH_PROBLEM

Memcached 3.0.0 以降で使用可能です。

Memcached::RES_AUTH_FAILURE

Memcached 3.0.0 以降で使用可能です。

Memcached::RES_AUTH_CONTINUE

Memcached 3.0.0 以降で使用可能です。

Memcached::RES_E2BIG

Memcached 3.0.0 以降で使用可能です。

Memcached::RES_KEY_TOO_BIG

Memcached 3.0.0 以降で使用可能です。

Memcached::RES_SERVER_TEMPORARILY_DISABLED

Memcached 3.0.0 以降で使用可能です。

Memcached::RES_SERVER_MEMORY_ALLOCATION_FAILURE

Memcached 3.0.0 以降で使用可能です。

add a note

User Contributed Notes 5 notes

up
10
tyliu2 at gmail dot com
14 years ago
RES_SUCCESS = 0
RES_FAILURE = 1
RES_HOST_LOOKUP_FAILURE = 2
RES_UNKNOWN_READ_FAILURE = 7
RES_PROTOCOL_ERROR = 8
RES_CLIENT_ERROR = 9
RES_SERVER_ERROR = 10
RES_WRITE_FAILURE = 5
RES_DATA_EXISTS = 12
RES_NOTSTORED = 14
RES_NOTFOUND = 16
RES_PARTIAL_READ = 18
RES_SOME_ERRORS = 19
RES_NO_SERVERS = 20
RES_END = 21
RES_ERRNO = 26
RES_BUFFERED = 32
RES_TIMEOUT = 31
RES_BAD_KEY_PROVIDED = 33
RES_CONNECTION_SOCKET_CREATE_FAILURE = 11
RES_PAYLOAD_FAILURE = -1001
up
4
igorsantos07 no gmail
8 years ago
As per a StackOverflow answer (http://stackoverflow.com/a/9042985/102960, by @rid), this is the current list of Memcached Response constants:

00 = MEMCACHED_SUCCESS
01 = MEMCACHED_FAILURE
02 = MEMCACHED_HOST_LOOKUP_FAILURE // getaddrinfo() and getnameinfo() only
03 = MEMCACHED_CONNECTION_FAILURE
04 = MEMCACHED_CONNECTION_BIND_FAILURE // DEPRECATED see MEMCACHED_HOST_LOOKUP_FAILURE
05 = MEMCACHED_WRITE_FAILURE
06 = MEMCACHED_READ_FAILURE
07 = MEMCACHED_UNKNOWN_READ_FAILURE
08 = MEMCACHED_PROTOCOL_ERROR
09 = MEMCACHED_CLIENT_ERROR
10 = MEMCACHED_SERVER_ERROR // Server returns "SERVER_ERROR"
11 = MEMCACHED_ERROR // Server returns "ERROR"
12 = MEMCACHED_DATA_EXISTS
13 = MEMCACHED_DATA_DOES_NOT_EXIST
14 = MEMCACHED_NOTSTORED
15 = MEMCACHED_STORED
16 = MEMCACHED_NOTFOUND
17 = MEMCACHED_MEMORY_ALLOCATION_FAILURE
18 = MEMCACHED_PARTIAL_READ
19 = MEMCACHED_SOME_ERRORS
20 = MEMCACHED_NO_SERVERS
21 = MEMCACHED_END
22 = MEMCACHED_DELETED
23 = MEMCACHED_VALUE
24 = MEMCACHED_STAT
25 = MEMCACHED_ITEM
26 = MEMCACHED_ERRNO
27 = MEMCACHED_FAIL_UNIX_SOCKET // DEPRECATED
28 = MEMCACHED_NOT_SUPPORTED
29 = MEMCACHED_NO_KEY_PROVIDED /* Deprecated. Use MEMCACHED_BAD_KEY_PROVIDED! */
30 = MEMCACHED_FETCH_NOTFINISHED
31 = MEMCACHED_TIMEOUT
32 = MEMCACHED_BUFFERED
33 = MEMCACHED_BAD_KEY_PROVIDED
34 = MEMCACHED_INVALID_HOST_PROTOCOL
35 = MEMCACHED_SERVER_MARKED_DEAD
36 = MEMCACHED_UNKNOWN_STAT_KEY
37 = MEMCACHED_E2BIG
38 = MEMCACHED_INVALID_ARGUMENTS
39 = MEMCACHED_KEY_TOO_BIG
40 = MEMCACHED_AUTH_PROBLEM
41 = MEMCACHED_AUTH_FAILURE
42 = MEMCACHED_AUTH_CONTINUE
43 = MEMCACHED_PARSE_ERROR
44 = MEMCACHED_PARSE_USER_ERROR
45 = MEMCACHED_DEPRECATED
46 = MEMCACHED_IN_PROGRESS
47 = MEMCACHED_SERVER_TEMPORARILY_DISABLED
48 = MEMCACHED_SERVER_MEMORY_ALLOCATION_FAILURE
49 = MEMCACHED_MAXIMUM_RETURN /* Always add new error code before */
11 = MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE = MEMCACHED_ERROR
up
1
Anonymous
7 years ago
Note that with Memcached::OPT_BINARY_PROTOCOL enabled there is some (possibly significant) size overhead added at the TCP level.

If you have a high volume of small values being get/set, you should analyze the effect of this option on your overall traffic size with a network tool (e.g. tcpdump) before enabling it, especially if you pay for traffic in/out of your memcache instance.
up
1
akenney at onesite dot com
13 years ago
Apparently there is a bug in libmemcached where connect timeout does not work when OPT_NO_BLOCK is set as well.

The bug and related blocking bugs are discussed here:
https://bugs.launchpad.net/libmemcached/+bug/583031

We confirmed this in libmemcached version 0.43

Be sure to test some memcache servers in your pool being unavailable (no route to host and memcache service down) to ensure that timeout settings are working correctly.
up
0
Allen Tsai
13 years ago
Memcached::OPT_SERVER_FAILURE_LIMIT - once a server has hit this limit, the client's getResultMessage() will return "SERVER IS MARKED DEAD." Further gets() for keys hashing to this server will continue returning this message, as will sets() hashing to the dead server.

Version 2.0.01b supports a constant Memcached::OPT_AUTO_EJECT_HOSTS which allows automatic rebalancing of the cluster/automatic failover handling.
To Top