public bool getDelayed ( array $keys [, bool $with_cas [, callable $value_cb ]] )
获取Memcached中的键值在$keys里的数据,但此方法是异步的,不等Memcached准备好资源就直接返回,后续通过fetch或fetchAll获取本次请求的数据。如果设置$with_cas为true,则Memcached会为fetch或fetchAll准备的数据中加入cas_token。
如果需要在Memcached准备返回数据的过程中,对每个数据要做类似的操作,如每个数据都增1,则可以通过指定回掉函数$value_cb实现。Memcached每准备完一个数据(查找并放入一个服务端临时数组中)就会调用回掉函数一次,回掉函数中进行相关处理即可。回掉函数的定义如下:
function result_cb($memc, $item) { //对$item的处理 }
其中$memc为Memcached对象,$item为Memcached准备好的一个待返回数据,它的格式如下:
array(“key”=>键值, “value”=>数据值 [,”cas”=>cas token值])
如果调用getDelayed时设置\with_cas为true则$item中有cas,否则没有。public bool getDelayedByKey ( string $server_key , array $keys [, bool $with_cas [, callable $value_cb ]] )
同getDelayed(),但可以通过$server_key指定某个固定的服务器获取相关数据,前提是这些数据也是通过相同的$server_key存入Memcached中的。public mixed getMulti ( array $keys [, array &$cas_tokens [, int $flags ]] )
getDelayed()的同步版本,即向服务端Memcached一次性请求返回多个键值的数据后等待服务端响应,而不是直接返回。如果设置了$cas_tokens,则被找到的数据的cas token会形成数组存入$cas_tokens随数据一块返回。
如果设置了$flag,则可对返回数据的结果进行一些额外操作,目前仅支持$flag设置为Memcached::GET_PRESERVE_ORDER,这样就会使得返回数据按照请求中的key的顺序排列。
public array getMultiByKey ( string $server_key , array $keys [, string &$cas_tokens [, int $flags ]] )
同getMultiByKey,但可以通过$server_key指定某个固定的服务器获取相关数据,前提是这些数据也是通过相同的$server_key存入Memcached中的。public mixed getOption ( int $option )
获取服务端Memcached的值为$option的配置项的值。Memcached会被PHP插件依赖的libmemcached进行一些配置,PHP的Memcached插件本身也会进行一些默认配置,这些配置均可以通过getOption来查询当前的配置信息。
public int getResultCode ( void )
获取返回上一次客户端对服务端Memcached请求操作的结果代码,参考: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_ERRORpublic string getResultMessage ( void )
获取返回上一次客户端对服务端Memcached请求操作的结果信息(结果代码的英文翻译)。public array getServerByKey ( string $server_key )
查询所有*ByKey方法操作的服务器信息。\$server_key是*ByKey方法使用的服务器标识字符串。返回的服务器信息结构为:
array(“host”=>服务器IP地址,”port”=>服务器端口值,”weight”=>服务器权重)
这些信息是在调用addServer()或addServers()时由客户端提供的。public array getServerList ( void )
返回addServer()或addServers()时由客户端提供的服务器列表信息。
返回数据是个数组,数组中的每个元素的格式为:
array(“host”=>服务器IP地址,”port”=>服务器端口值,”weight”=>服务器权重)public array getStats ( void )
返回所有Memcached服务器的状态信息,返回的数据为数组,其中的每个数据格式为:键值为服务器的IP地址:端口,值为服务器状态信息数组:array(
[服务器1的IP地址 : 服务器1的端口]=>服务器1的状态信息数组,
[服务器2的IP地址 : 服务器2的端口]=>服务器2的状态信息数组,
…)服务器状态信息结构如下:
array(
[状态属性1] => 状态属性1的值
[状态属性2] => 状态属性2的值
…
)状态属性参考(来自github上Memcached协议):
PHP的51个Memcached方法(22-31)
最新推荐文章于 2024-10-03 08:46:00 发布