Predefined Constants
The constants below are defined by this extension, and will only be available when the extension has either been compiled into PHP or dynamically loaded at runtime.
Memcached::OPT_COMPRESSION
-
Enables or disables payload compression. When enabled, item values longer than a certain threshold (currently 100 bytes) will be compressed during storage and decompressed during retrieval transparently.
Type: boolean, default:
TRUE
. Memcached::OPT_SERIALIZER
-
Specifies the serializer to use for serializing non-scalar values. The valid serializers are
Memcached::SERIALIZER_PHP
orMemcached::SERIALIZER_IGBINARY
. The latter is supported only when memcached is configured with --enable-memcached-igbinary option and the igbinary extension is loaded.Type: integer, default:
Memcached::SERIALIZER_PHP
. Memcached::SERIALIZER_PHP
-
The default PHP serializer.
Memcached::SERIALIZER_IGBINARY
-
The » igbinary serializer. Instead of textual representation it stores PHP data structures in a compact binary form, resulting in space and time gains.
Memcached::SERIALIZER_JSON
-
The JSON serializer. Requires PHP 5.2.10+.
Memcached::OPT_PREFIX_KEY
-
This can be used to create a "domain" for your item keys. The value specified here will be prefixed to each of the keys. It cannot be longer than 128 characters and will reduce the maximum available key size. The prefix is applied only to the item keys, not to the server keys.
Type: string, default: "".
Memcached::OPT_HASH
-
Specifies the hashing algorithm used for the item keys. The valid values are supplied via
Memcached::HASH_*
constants. Each hash algorithm has its advantages and its disadvantages. Go with the default if you don't know or don't care.Type: integer, default:
Memcached::HASH_DEFAULT
Memcached::HASH_DEFAULT
-
The default (Jenkins one-at-a-time) item key hashing algorithm.
Memcached::HASH_MD5
-
MD5 item key hashing algorithm.
Memcached::HASH_CRC
-
CRC item key hashing algorithm.
Memcached::HASH_FNV1_64
-
FNV1_64 item key hashing algorithm.
Memcached::HASH_FNV1A_64
-
FNV1_64A item key hashing algorithm.
Memcached::HASH_FNV1_32
-
FNV1_32 item key hashing algorithm.
Memcached::HASH_FNV1A_32
-
FNV1_32A item key hashing algorithm.
Memcached::HASH_HSIEH
-
Hsieh item key hashing algorithm.
Memcached::HASH_MURMUR
-
Murmur item key hashing algorithm.
Memcached::OPT_DISTRIBUTION
-
Specifies the method of distributing item keys to the servers. Currently supported methods are modulo and consistent hashing. Consistent hashing delivers better distribution and allows servers to be added to the cluster with minimal cache losses.
Type: integer, default:
Memcached::DISTRIBUTION_MODULA.
Memcached::DISTRIBUTION_MODULA
-
Modulo-based key distribution algorithm.
Memcached::DISTRIBUTION_CONSISTENT
-
Consistent hashing key distribution algorithm (based on libketama).
Memcached::OPT_LIBKETAMA_COMPATIBLE
-
Enables or disables compatibility with libketama-like behavior. When enabled, the item key hashing algorithm is set to MD5 and distribution is set to be weighted consistent hashing distribution. This is useful because other libketama-based clients (Python, Ruby, etc.) with the same server configuration will be able to access the keys transparently.
Note:
It is highly recommended to enable this option if you want to use consistent hashing, and it may be enabled by default in future releases.
Type: boolean, default:
FALSE
. Memcached::OPT_BUFFER_WRITES
-
Enables or disables buffered I/O. Enabling buffered I/O causes storage commands to "buffer" instead of being sent. Any action that retrieves data causes this buffer to be sent to the remote connection. Quitting the connection or closing down the connection will also cause the buffered data to be pushed to the remote connection.
Type: boolean, default:
FALSE
. Memcached::OPT_BINARY_PROTOCOL
-
Enable the use of the binary protocol. Please note that you cannot toggle this option on an open connection.
Type: boolean, default:
FALSE
. Memcached::OPT_NO_BLOCK
-
Enables or disables asynchronous I/O. This is the fastest transport available for storage functions.
Type: boolean, default:
FALSE
. Memcached::OPT_TCP_NODELAY
-
Enables or disables the no-delay feature for connecting sockets (may be faster in some environments).
Type: boolean, default:
FALSE
. Memcached::OPT_SOCKET_SEND_SIZE
-
The maximum socket send buffer in bytes.
Type: integer, default: varies by platform/kernel configuration.
Memcached::OPT_SOCKET_RECV_SIZE
-
The maximum socket receive buffer in bytes.
Type: integer, default: varies by platform/kernel configuration.
Memcached::OPT_CONNECT_TIMEOUT
-
In non-blocking mode this set the value of the timeout during socket connection, in milliseconds.
Type: integer, default: 1000.
Memcached::OPT_RETRY_TIMEOUT
-
The amount of time, in seconds, to wait until retrying a failed connection attempt.
Type: integer, default: 0.
Memcached::OPT_SEND_TIMEOUT
-
Socket sending timeout, in microseconds. In cases where you cannot use non-blocking I/O this will allow you to still have timeouts on the sending of data.
Type: integer, default: 0.
Memcached::OPT_RECV_TIMEOUT
-
Socket reading timeout, in microseconds. In cases where you cannot use non-blocking I/O this will allow you to still have timeouts on the reading of data.
Type: integer, default: 0.
Memcached::OPT_POLL_TIMEOUT
-
Timeout for connection polling, in milliseconds.
Type: integer, default: 1000.
Memcached::OPT_CACHE_LOOKUPS
-
Enables or disables caching of DNS lookups.
Type: boolean, default:
FALSE
. Memcached::OPT_SERVER_FAILURE_LIMIT
-
Specifies the failure limit for server connection attempts. The server will be removed after this many continuous connection failures.
Type: integer, default: 0.
Memcached::HAVE_IGBINARY
-
Indicates whether igbinary serializer support is available.
Type: boolean.
Memcached::HAVE_JSON
-
Indicates whether JSON serializer support is available.
Type: boolean.
Memcached::GET_PRESERVE_ORDER
-
A flag for Memcached::getMulti() and Memcached::getMultiByKey() to ensure that the keys are returned in the same order as they were requested in. Non-existing keys get a default value of NULL.
Memcached::RES_SUCCESS
-
The operation was successful.
Memcached::RES_FAILURE
-
The operation failed in some fashion.
Memcached::RES_HOST_LOOKUP_FAILURE
-
DNS lookup failed.
Memcached::RES_UNKNOWN_READ_FAILURE
-
Failed to read network data.
Memcached::RES_PROTOCOL_ERROR
-
Bad command in memcached protocol.
Memcached::RES_CLIENT_ERROR
-
Error on the client side.
Memcached::RES_SERVER_ERROR
-
Error on the server side.
Memcached::RES_WRITE_FAILURE
-
Failed to write network data.
Memcached::RES_DATA_EXISTS
-
Failed to do compare-and-swap: item you are trying to store has been modified since you last fetched it.
Memcached::RES_NOTSTORED
-
Item was not stored: but not because of an error. This normally means that either the condition for an "add" or a "replace" command wasn't met, or that the item is in a delete queue.
Memcached::RES_NOTFOUND
-
Item with this key was not found (with "get" operation or "cas" operations).
Memcached::RES_PARTIAL_READ
-
Partial network data read error.
Memcached::RES_SOME_ERRORS
-
Some errors occurred during multi-get.
Memcached::RES_NO_SERVERS
-
Server list is empty.
Memcached::RES_END
-
End of result set.
Memcached::RES_ERRNO
-
System error.
Memcached::RES_BUFFERED
-
The operation was buffered.
Memcached::RES_TIMEOUT
-
The operation timed out.
Memcached::RES_BAD_KEY_PROVIDED
-
Bad key.
Memcached::RES_CONNECTION_SOCKET_CREATE_FAILURE
-
Failed to create network socket.
Memcached::RES_PAYLOAD_FAILURE
-
Payload failure: could not compress/decompress or serialize/unserialize the value.
Коментарии
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
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.
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.
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
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.