Memcache

目录

简介

表示连接到一个服务器组的连接。

类摘要

Memcache

class Memcache {

bool add ( string $key , mixed $var [, int $flag [, int $expire ]] )

bool addServer ( string $host [, int $port = 11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback [, int $timeoutms ]]]]]]]] )

bool close ( void )

bool connect ( string $host [, int $port [, int $timeout ]] )

int decrement ( string $key [, int $value = 1 ] )

bool delete ( string $key [, int $timeout = 0 ] )

bool flush ( void )

string get ( string $key [, int &$flags ] )

array getExtendedStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )

int getServerStatus ( string $host [, int $port = 11211 ] )

array getStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )

string getVersion ( void )

int increment ( string $key [, int $value = 1 ] )

mixed pconnect ( string $host [, int $port [, int $timeout ]] )

bool replace ( string $key , mixed $var [, int $flag [, int $expire ]] )

bool set ( string $key , mixed $var [, int $flag [, int $expire ]] )

bool setCompressThreshold ( int $threshold [, float $min_savings ] )

bool setServerParams ( string $host [, int $port = 11211 [, int $timeout [, int $retry_interval = false [, bool $status [, callback $failure_callback ]]]]] )

}

Memcache::add

增加一个条目到缓存服务器

说明

bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )

Memcache::add方法在缓存服务器之前不存在key时, 以key作为key存储一个变量var到缓存服务器。 同样可以使用函数memcache_add

参数

key
将要分配给变量的key。

var
将要被存储的变量。字符串和整型被以原文存储,其他类型序列化后存储。

flag
使用**MEMCACHE_COMPRESSED**标记对数据进行压缩(使用zlib)。

expire
当前写入缓存的数据的失效时间。如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数(从当前算起的时间差)来说明此数据的过期时间,但是在后一种设置方式中,不能超过 2592000秒(30天)。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE。 如果这个key已经存在返回**FALSE**。 Memcache::add方法的其他行为类似 Memcache::set

范例

示例 #1 Memcache::add示例

<?php

$memcache_obj = memcache_connect("localhost", 11211);

/* 面向过程编程 API */
memcache_add($memcache_obj, 'var_key', 'test variable', false, 30);

/* 面向对象编程 API */
$memcache_obj->add('var_key', 'test variable', false, 30);

?>

参见

  • Memcache::set
  • Memcache::replace

Memcache::addServer

向连接池中添加一个memcache服务器

说明

bool Memcache::addServer ( string $host [, int $port = 11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback [, int $timeoutms ]]]]]]]] )

Memcache::addServer增加一个服务器到连接池中。通过Memcache::addServer 打开的连接将会在脚本执行结束后自动关闭,也可以使用Memcache::close进行手动关闭。 您也可以使用memcache_add_server来添加服务器。

当使用这个方法的时候(与Memcache::connectMemcache::pconnect相反) 网络连接并不会立刻建立,而是直到真正使用的时候才建立。 因此在加入大量服务器到连接池中时也是没有开销的,因为它们可能并不会被使用。

故障转移可能在方法的任何一个层次发生,通常只要其他服务器可用用户就不会感受到。任何的socket或memcache服务器级别的错误 (比如内存溢出)都可能导致故障转移。而一般的客户端错误比如使用Memcache::add尝试增加一个已经存在的key则不会导致故障转移。

Note:

这个方法在2.0.0版本加入Memcache。

参数

host
要连接的memcached服务端监听的主机位置。这个参数通常指定其他类型的传输比如Unix域套接字使用 unix:///path/to/memcached.sock,这种情况下参数port 必须设置为0

port
要连接的memcached服务端监听的端口。当使用UNIX域套接字连接时设置为0

persistent
控制是否使用持久化连接。默认**TRUE**。

weight
为此服务器创建的桶的数量,用来控制此服务器被选中的权重,单个服务器被选中的概率是相对于所有服务器weight总和而言的。

timeout
连接持续(超时)时间(单位秒),默认值1秒,修改此值之前请三思,过长的连接持续时间可能会导致失去所有的缓存优势。

retry_interval
服务器连接失败时重试的间隔时间,默认值15秒。如果此参数设置为-1表示不重试。此参数和persistent参数在扩展以 dl函数动态加载的时候无效。

每个失败的连接结构有自己的超时时间,并且在它失效之前选择后端服务请求时该结构会被跳过。一旦一个连接失效, 它将会被成功重新连接或被标记为失败连接以在下一个retry_interval秒重连。 典型的影响是每个web服务子进程在服务于一个页面时将会每retry_interval秒 尝试重新连接一次。

status
控制此服务器是否可以被标记为在线状态。设置此参数值为**FALSE并且retry_interval参数 设置为-1时允许将失败的服务器保留在一个池中以免影响key的分配算法。对于这个服务器的请求会进行故障转移或者立即失败, 这受限于memcache.allow_failover参数的设置。该参数默认TRUE**,表明允许进行故障转移。

failure_callback
允许用户指定一个运行时发生错误后的回调函数。回调函数会在故障转移之前运行。回调函数会接受到两个参数,分别是失败主机的 主机名和端口号。

timeoutms

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::addServer 示例

<?php

/* OO API */

$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
$memcache->addServer('memcache_host2', 11211);

/* procedural API */

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_add_server($memcache_obj, 'memcache_host2', 11211);

?>

参见

  • Memcache::connect
  • Memcache::pconnect
  • Memcache::close
  • Memcache::setServerParams
  • Memcache::getServerStatus

Memcache::close

关闭memcache连接

说明

bool Memcache::close ( void )

Memcache::close关闭到memcached服务端的连接。这个函数不会关闭持久化连接, 持久化连接仅仅会在web服务器关机/重启时关闭。与之对应的,你也可以使用memcache_close函数。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::close示例

<?php

/* 面向过程 API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* 
do something here ..
*/
memcache_close($memcache_obj);

/* 面向对象 API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
/* 
do something here ..
*/
$memcache_obj->close();

?>

参见

  • Memcache::connect
  • Memcache::pconnect

Memcache::connect

打开一个memcached服务端连接

说明

bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )

Memcache::connect建立一个到memcached服务端的连接。 使用方法 Memcache::connect打开的连接在脚本执行结束后会自动关闭。当然,你也可以使用方法 Memcache::close来主动关闭。 同时你也可以使用memcache_connect函数来获取一个连接。

参数

host
memcached服务端监听主机地址。这个参数也可以指定为其他传输方式比如unix:///path/to/memcached.sock 来使用Unix域socket,在这种方式下,port参数必须设置为0

port
memcached服务端监听端口。当使用Unix域socket的时候要设置此参数为0

timeout
连接持续(超时)时间,单位秒。默认值1秒,修改此值之前请三思,过长的连接持续时间可能会导致失去所有的缓存优势。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::connect example

<?php

/* procedural API */

$memcache_obj = memcache_connect('memcache_host', 11211);

/* OO API */

$memcache = new Memcache;
$memcache->connect('memcache_host', 11211);

?>

参见

  • Memcache::pconnect
  • Memcache::close

Memcache::decrement

减小元素的值

说明

int Memcache::decrement ( string $key [, int $value = 1 ] )

Memcache::decrement方法将元素的值减小value。 类似于 Memcache::increment方法,首先将元素当前值转换成数值然后减去value

Note:

新的元素的值不会小于0。

Note:

不要将class="function">Memcache::decrement方法用于压缩存储的元素,那样作会导致 Memcache::get方法获取值会失败。

Memcache::decrement在元素不存在时不能创建它。 同样可以使用memcache_decrement函数来完成相同的工作。

参数

key
要减小值的元素的key。

value
value参数指要将指定元素的值减小多少。

返回值

成功的时候返回元素的新值 或者在失败时返回 FALSE

范例

示例 #1 Memcache::decrement example

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* 将test_item对应的值减小2 */
$new_value = memcache_decrement($memcache_obj, 'test_item', 2);

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
/* decrement item by 3 */
$new_value = $memcache_obj->decrement('test_item', 3);
?>

参见

  • Memcache::increment
  • Memcache::replace

Memcache::delete

从服务端删除一个元素

说明

bool Memcache::delete ( string $key [, int $timeout = 0 ] )

Memcache::delete函数通过key删除一个元素。 如果参数timeout指定,该元素会在timeout秒后失效。 同样也可以使用memcache_delete函数完成同样功能。

参数

key
要删除的元素的key。

timeout
删除该元素的执行时间。如果值为0,则该元素立即删除,如果值为30,元素会在30秒内被删除。

更新日志

版本说明
UnknownIt's not recommended to use the timeout parameter. The behavior differs between memcached versions, but setting to 0 is safe. Other values for this deprecated feature may cause the memcache delete to fail.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::delete example

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);

/* 10秒后key_to_delete对应的值会被从服务端删除 */
memcache_delete($memcache_obj, 'key_to_delete', 10);

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);

$memcache_obj->delete('key_to_delete', 10);

?>

参见

  • Memcache::set
  • Memcache::replace

Memcache::flush

清洗(删除)已经存储的所有的元素

说明

bool Memcache::flush ( void )

Memcache::flush立即使所有已经存在的元素失效。方法Memcache::flush 并不会真正的释放任何资源,而是仅仅标记所有元素都失效了,因此已经被使用的内存会被新的元素复写。 同样你也可以使用函数memcache_flush完成相同功能。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::flush示例

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);

memcache_flush($memcache_obj);

/* OO API */

$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);

$memcache_obj->flush();

?>

Memcache::get

从服务端检回一个元素

说明

string Memcache::get ( string $key [, int &$flags ] )

array Memcache::get ( array $keys [, array &$flags ] )

如果服务端之前有以key作为key存储的元素,Memcache::get方法此时返回之前存储的值。

你可以给Memcache::get方法传递一个数组(多个key)来获取一个数组的元素值,返回的数组仅仅包含从 服务端查找到的key-value对。

参数

key
要获取值的key或key数组。

flags
如果给定这个参数(以引用方式传递),该参数会被写入一些key对应的信息。这些标记和Memcache::set方法中的同名参数 意义相同。用int值的低位保留了pecl/memcache的内部用法(比如:用来说明压缩和序列化状态)。(译注:最后一位表明是否序列化,倒数第二位表明是否经过压缩, 比如:如果此值为1表示经过序列化,但未经过压缩,2表明压缩而未序列化,3表明压缩并且序列化,0表明未经过压缩和序列化,具体算法可查找linux文件权限算法相关资料)

返回值

返回key对应的存储元素的字符串值或者在失败或key未找到的时候返回**FALSE**。

范例

示例 #1 Memcache::get 示例

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
$var = memcache_get($memcache_obj, 'some_key');

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
$var = $memcache_obj->get('some_key');

/* 
你同样可以使用数组key作为参数,如果某个元素没有在服务端发现,结果数组中将不会包含这些key。
*/

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
$var = memcache_get($memcache_obj, Array('some_key', 'another_key'));

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
$var = $memcache_obj->get(Array('some_key', 'second_key'));

?>

Memcache::getExtendedStats

缓存服务器池中所有服务器统计信息

说明

array Memcache::getExtendedStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )

Memcache::getExtendedStats 返回一个二维关联数据的服务器统计信息。数组的key由host:port方式 组成,无效的服务器返回的统计信息被设置为false,同样的,你可以使用函数memcache_get_extended_stats

Note:

这个函数在Memcache2.0.0版本加入。

Note:

(译注)获取Memcache内所有数据方法:首先使用getExtendedStats('slabs')获取到每个服务器上活动slabs分块的id, 然后 使用getExtendedStats('cachedump', $slabid, $limit)来获取每个slab里面缓存的项,其中$slabid是slab分块id, $limit指 期望获取其中的多少条记录。

参数

type
期望抓取的统计信息类型,可以使用的值有{reset, malloc, maps, cachedump, slabs, items, sizes}。 通过memcached协议指定这些附加参数是为了方便memcache开发者(检查其中的变动)。

slabid
用于与参数type联合从指定slab分块拷贝数据,cachedump命令会完全占用服务器通常用于 比较严格的调试。

limit
用于和参数type联合来设置cachedump时从服务端获取的实体条数。

返回值

返回一个二维关联数组的服务器统计信息或者在失败时返回**FALSE**。

范例

示例 #1 Memcache::getExtendedStats 示例

<?php
    $memcache_obj = new Memcache;
    $memcache_obj->addServer('memcache_host', 11211);
    $memcache_obj->addServer('failed_host', 11211);
    
    $stats = $memcache_obj->getExtendedStats();
    print_r($stats);
?>

以上例程会输出:

Array
(
    [memcache_host:11211] => Array
        (
            [pid] => 3756
            [uptime] => 603011
            [time] => 1133810435
            [version] => 1.1.12
            [rusage_user] => 0.451931
            [rusage_system] => 0.634903
            [curr_items] => 2483
            [total_items] => 3079
            [bytes] => 2718136
            [curr_connections] => 2
            [total_connections] => 807
            [connection_structures] => 13
            [cmd_get] => 9748
            [cmd_set] => 3096
            [get_hits] => 5976
            [get_misses] => 3772
            [bytes_read] => 3448968
            [bytes_written] => 2318883
            [limit_maxbytes] => 33554432
        )

    [failed_host:11211] => false
)

参见

  • Memcache::getVersion
  • Memcache::getStats

Memcache::getServerStatus

用于获取一个服务器的在线/离线状态

说明

int Memcache::getServerStatus ( string $host [, int $port = 11211 ] )

Memcache::getServerStatus返回一个服务器的在线/离线状态,你也同样可以使用 函数memcache_get_server_status

Note:

这个函数在memcache2.1.0版本加入。

参数

host
主机监听地址。

port
主机监听端口,默认11211.

返回值

返回一个服务器的状态,0表示服务器离线,非0表示在线。

范例

示例 #1 Memcache::getServerStatus 示例

<?php

/* OO API */
$memcache = new Memcache;
$memcache->addServer('memcache_host', 11211);
echo $memcache->getServerStatus('memcache_host', 11211);

/* procedural API */
$memcache = memcache_connect('memcache_host', 11211);
echo memcache_get_server_status($memcache, 'memcache_host', 11211);

?>

参见

  • Memcache::addServer
  • Memcache::setServerParams

Memcache::getStats

获取服务器统计信息

说明

array Memcache::getStats ([ string $type [, int $slabid [, int $limit = 100 ]]] )

Memcache::getStats返回一个关联数据的服务器统计信息。数组key是统计信息名, 值就是统计信息的值。同样你可以使用函数memcache_get_stats

参数

type
期望抓取的统计信息类型,可以使用的值有{reset, malloc, maps, cachedump, slabs, items, sizes}。 通过memcached协议指定这些附加参数是为了方便memcache开发者(检查其中的变动)。

slabid
用于与参数type联合从指定slab分块拷贝数据,cachedump命令会完全占用服务器通常用于 比较严格的调试。

limit
用于和参数type联合来设置cachedump时从服务端获取的实体条数。

返回值

返回关联数组表示的服务器统计信息 或者在失败时返回 FALSE

参见

  • Memcache::getVersion
  • Memcache::getExtendedStats

Memcache::getVersion

返回服务器版本信息

说明

string Memcache::getVersion ( void )

Memcache::getVersion返回一个字符串表示的服务端版本号。 同样你也可以使用函数memcache_get_version

返回值

返回服务端版本号 或者在失败时返回 FALSE

范例

示例 #1 Memcache::getVersion 示例

<?php

/* OO API */
$memcache = new Memcache;
$memcache->connect('memcache_host', 11211);
echo $memcache->getVersion();

/* procedural API */
$memcache = memcache_connect('memcache_host', 11211);
echo memcache_get_version($memcache);

?>

参见

  • Memcache::getExtendedStats
  • Memcache::getStats

Memcache::increment

增加一个元素的值

说明

int Memcache::increment ( string $key [, int $value = 1 ] )

Memcache::increment将指定元素的值增加value。如果指定的key 对应的元素不是数值类型并且不能被转换为数值, 会将此值修改为value. Memcache::increment 不会在key对应元素不存在时创建元素。

Note:

不要在经过压缩存储的元素上使用class="function">Memcache::increment,因为这样作会导致后续对class="function">Memcache::get的调用失败。

同样你也可以使用函数memcache_increment

参数

key
将要增加值的元素的key。

value
参数value表明要将指定元素值增加多少。

返回值

成功时返回新的元素值 或者在失败时返回 FALSE

范例

示例 #1 Memcache::increment示例

<?php

/* procedural API */
$memcache_obj = memcache_connect('memcache_host', 11211);
/* increment counter by 2 */
$current_value = memcache_increment($memcache_obj, 'counter', 2);

/* OO API */
$memcache_obj = new Memcache;
$memcache_obj->connect('memcache_host', 11211);
/* increment counter by 3 */
$current_value = $memcache_obj->increment('counter', 3);

?>

参见

  • Memcache::decrement
  • Memcache::replace

Memcache::pconnect

打开一个到服务器的持久化连接

说明

mixed Memcache::pconnect ( string $host [, int $port [, int $timeout ]] )

Memcache::pconnectMemcache::connect非常类似,不同点在于这里建立的连接是持久化的。 这个连接不会在脚本执行结束后或者Memcache::close被调用后关闭。 同样你也可以使用函数memcache_pconnect

参数

host
服务端监听的主机地址。这个参数还可以指定为其他传输方式比如unix:///path/to/memcached.sock 来使用Unix域套接字,使用这种方式port参数必须设置为0

port
服务端监听的端口号。使用Unix域套接字的时候需要将这个参数设置为0

timeout
连接持续(超时)时间,单位秒。默认值1秒,修改此值之前请三思,过长的连接持续时间可能会导致失去所有的缓存优势。

返回值

返回一个 Memcache 对象 或者在失败时返回 FALSE.

范例

示例 #1 Memcache::pconnect示例

<?php

/* procedural API */
$memcache_obj = memcache_pconnect('memcache_host', 11211);

/* OO API */

$memcache_obj = new Memcache;
$memcache_obj->pconnect('memcache_host', 11211);

?>

参见

  • Memcache::connect

Memcache::replace

替换已经存在的元素的值

说明

bool Memcache::replace ( string $key , mixed $var [, int $flag [, int $expire ]] )

Memcache::replace通过key来查找元素并替换其值。当key 对应的元素不存在时,Memcache::replace返回**FALSE**。其他方面Memcache::replace 的行为和Memcache::set一样。 同样你也可以使用函数memcache_replace

参数

key
期望替换值的元素的key。

var
将要存储的新的值,字符串和数值直接存储,其他类型序列化后存储。

flag
使用**MEMCACHE_COMPRESSED**指定对值进行压缩(使用zlib)。

expire
当前写入缓存的数据的失效时间。如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数(从当前算起的时间差)来说明此数据的过期时间,但是在后一种设置方式中,不能超过 2592000秒(30天)。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::replace示例

<?php

$memcache_obj = memcache_connect('memcache_host', 11211);

/* procedural API */
memcache_replace($memcache_obj, "test_key", "some variable", false, 30);

/* OO API */
$memcache_obj->replace("test_key", "some variable", false, 30);

?>

参见

  • Memcache::set
  • Memcache::add

Memcache::set

Store data at the server

说明

bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )

Memcache::setkey存储一个元素值为 var。参数expire是以秒为单位的失效时间, 如果设置为0表明该元素永不过期(但是它可能会因为为了给其他项分配空间而被删除)。如果你希望存储的元素 经过压缩(使用zlib),你可以设置flag的值为**MEMCACHE_COMPRESSED**。

Note:

谨记:资源类型变量(比如文件或连接)不能被存储在缓存中,因为它们在序列化状态不能被完整描述。

同样你也可以使用函数memcache_set

参数

key
要设置值的key。

var
要存储的值,字符串和数值直接存储,其他类型序列化后存储。

flag
使用**MEMCACHE_COMPRESSED**指定对值进行压缩(使用zlib)。

expire
当前写入缓存的数据的失效时间。如果此值设置为0表明此数据永不过期。你可以设置一个UNIX时间戳或 以秒为单位的整数(从当前算起的时间差)来说明此数据的过期时间,但是在后一种设置方式中,不能超过 2592000秒(30天)。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::set 示例

<?php
/* procedural API */

/* connect to memcached server */
$memcache_obj = memcache_connect('memcache_host', 11211);

/*
设置'var_key'对应存储的值
flag参数使用0,值没有经过压缩
失效时间为30秒
*/
memcache_set($memcache_obj, 'var_key', 'some variable', 0, 30);

echo memcache_get($memcache_obj, 'var_key');

?>

示例 #2 Memcache::set 示例

<?php
/* OO API */

$memcache_obj = new Memcache;

/* connect to memcached server */
$memcache_obj->connect('memcache_host', 11211);

/*
设置'var_key'对应值,使用即时压缩
失效时间为50秒
*/
$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 50);

echo $memcache_obj->get('var_key');

?>

参见

  • Memcache::add
  • Memcache::replace

Memcache::setCompressThreshold

开启大值自动压缩

说明

bool Memcache::setCompressThreshold ( int $threshold [, float $min_savings ] )

Memcache::setCompressThreshold开启对于大值的自动压缩。 同样你也可以使用函数memcache_set_compress_threshold

Note:

此函数在memcache2.0.0加入。

参数

threshold
控制多大值进行自动压缩的阈值。

min_saving
指定经过压缩实际存储的值的压缩率,支持的值必须在0和1之间。默认值是0.2表示20%压缩率。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::setCompressThreshold 示例

<?php

/* OO API */

$memcache_obj = new Memcache;
$memcache_obj->addServer('memcache_host', 11211);
$memcache_obj->setCompressThreshold(20000, 0.2);

/* procedural API */

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_set_compress_threshold($memcache_obj, 20000, 0.2);

?>

Memcache::setServerParams

运行时修改服务器参数和状态

说明

bool Memcache::setServerParams ( string $host [, int $port = 11211 [, int $timeout [, int $retry_interval = false [, bool $status [, callback $failure_callback ]]]]] )

Memcache::setServerParams用于运行时修改服务器参数。 同样你可以使用函数memcache_set_server_params

Note:

在memcache2.1.0加入。

参数

host
服务端监听地址。

port
服务端监听端口。

timeout
连接持续(超时)时间(单位秒),默认值1秒,修改此值之前请三思,过长的连接持续时间可能会导致失去所有的缓存优势。

retry_interval
服务器连接失败时重试的间隔时间,默认值15秒。如果此参数设置为-1表示不重试。此参数和persistent参数在扩展以 dl函数动态加载的时候无效。

status
控制此服务器是否可以被标记为在线状态。设置此参数值为**FALSE并且retry_interval参数 设置为-1时允许将失败的服务器保留在一个池中以免影响key的分配算法。对于这个服务器的请求会进行故障转移或者立即失败, 这受限于memcache.allow_failover参数的设置。该参数默认TRUE**,表明允许进行故障转移。

failure_callback
允许用户指定一个运行时发生错误后的回调函数。回调函数会在故障转移之前运行。回调函数会接受到两个参数,分别是失败主机的 主机名和端口号。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

示例 #1 Memcache::setServerParams 示例

<?php

function _callback_memcache_failure($host, $port) {
    print "memcache '$host:$port' failed";
}

/* OO API */

$memcache = new Memcache;

// 增加一台离线服务器
$memcache->addServer('memcache_host', 11211, false, 1, 1, -1, false);

// 使该服务器变为在线状态
$memcache->setServerParams('memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');

/* procedural API */

$memcache_obj = memcache_connect('memcache_host', 11211);
memcache_set_server_params($memcache_obj, 'memcache_host', 11211, 1, 15, true, '_callback_memcache_failure');

?>

参见

  • Memcache::addServer
  • Memcache::getServerStatus