首頁 後端開發 php教程 php操作memcache

php操作memcache

Jun 23, 2016 pm 02:33 PM

1.简介

memcache模块是一个高效的守护进程,提供用于内存缓存的过程式程序和面向对象的方便的接口,特别是对于设计动态web程序时减少对数据库的访问。

memcache也提供用于通信对话(session_handler)的处理。

更多Memcache 模块相关信息可以到 http://www.danga.com/memcached/ 查阅。

 1.1.memcache在php.ini中的配置项列表 memcache在php.ini中的配置项列表
名称 默认值 是否可变 改变日志
memcache.allow_failover “1” PHP_INI_ALL Available since memcache 2.0.2.
memcache.max_failover_attempts "20" PHP_INI_ALL Available since memcache 2.1.0.
memcache.chunk_size "8192" PHP_INI_ALL Available since memcache 2.0.2.
memcache.default_port "11211" PHP_INI_ALL Available since memcache 2.0.2.
memcache.hash_strategy "standard" PHP_INI_ALL Available since memcache 2.2.0.
memcache.hash_function "crc32" PHP_INI_ALL Available since memcache 2.2.0.
session.save_handler "files" PHP_INI_ALL Supported since memcache 2.1.2
session.save_path "" PHP_INI_ALL Supported since memcache 2.1.2

有关 PHP_INI_* 常量进一步的细节与定义参见PHP手册php.ini 配置选项。

1.2.以下是配置项的简要解释

memcache.allow_failover Boolean

在错误时是否透明的故障转移到其他服务器上处理(注:故障转移是动词)。

memcache.max_failover_attempts integer

定义服务器的数量类设置和获取数据,只联合 memcache.allow_failover 一同使用。

memcache.chunk_size integer

数据将会被分成指定大小(chunk_size)的块来传输,这个值(chunk_size)越小,写操作的请求就越多,如果发现其他的无法解释的减速,请试着将这个值增大到32768.

memcache.default_port string

当连接memcache服务器的时候,如果没有指定端口这个默认的tcp端口将被用。

memcache.hash_strategy string

控制在映射 key 到服务器时使用哪种策略。设置这个值一致能使hash 算法始终如一的使用于服务器接受添加或者删除池中变量时将不会被重新映射。设置这个值以标准的结果在旧的策略被使用时。

memcache.hash_function string

控制哪种 hsah 函数被应用于 key映射 到服务器过程中,默认值“crc32”使用 CRC32 算法,而“fnv”则表示使用 FNV-1a 算法。

session.save_handler string

通过设置这个值为memcache来确定使用 memcache 用于通信对话的处理(session handler)。

session.save_path string

定义用于通话存储的各服务器链接的分隔符号,例如:“tcp://host1:11211, tcp://host2:11211”。

每服务器个链接可以包含被接受于该服务器的参数,比较类似使用 Memcache::addServer() 来添加的服务器,例如:“tcp://host1:11211?persistent=1&weight=1&timeout=1& amp;retry_interval=15”。

 1.3.memcache常量列表 memcache常量列表
名称 类型 描述
MEMCACHE_COMPRESSED integer 用于调整在使用 Memcache::set(), Memcache::add() 和 Memcache::replace() 几个函数时的压缩比率。
MEMCACHE_HAVE_SESSION integer 如果通信对话的处理(session handler)被允许使用其值为 1,其他情况值为 0。
2Memcache Functions 函数列表2.1.Memcache::connect2.1.1.说明

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

连接memcache服务器

2.1.2.参数

$host(string)  服务器域名或ip

$port(int)  服务器tcp端口号,默认值是11211

$timeout  连接memcache进程的失效时间,在修改它的默认值1的时候要三思,以免失去所有memcache缓存的优势导致连接变得很慢。

2.1.3.返回值

如果成功则返回true,失败则返回false

2.1.4.范例

php
/*  procedural API  */
$memcache_obj  =  memcache_connect(‘memcache_host‘ ,  11211 );
/*  OO API  */
$memcache  =  new  Memcache;
$memcache -> connect(‘memcache_host‘ ,  11211 );
?>

复制代码

登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
2.2.Memcache::pconnect2.2.1.说明

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

以常连接方式连接服务器

2.2.2.参数

$host(string) 服务器域名或ip

$port(int) 服务器tcp端口号,默认值是11211

$timeout 连接memcache进程的失效时间,在修改它的默认值1的时候要三思,以免失去所有memcache缓存的优势导致连接变得很慢。

2.2.3.返回值

如果成功则返回true,失败则返回false

2.2.4.范例

/* procedural API */
$memcache_obj = memcache_pconnect(‘memcache_host‘ , 11211 );
/* OO API */
$memcache_obj = new Memcache;
$memcache_obj -> pconnect(‘memcache_host‘ , 11211 );
?>

复制代码

登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
2.3.Memcache::close2.3.1.说明

bool Memcache :: close ( void )

关闭对象 (对常连接不起作用)

2.3.2.返回值

如果成功则返回true,失败则返回false

2.3.3.范例

/* procedural API */
$memcache_obj = memcache_connect(‘memcache_host‘ , 11211 );
/* do something here .. */
memcache_close( $memcache_obj );
/* OO API */
$memcache_obj = new Memcache;
$memcache_obj -> connect(‘memcache_host‘ , 11211 );
/* do something here .. */
$memcache_obj -> close();
?>

复制代码

2.4.Memcache::addServer2.4.1.说明

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

复制代码

向对象添加一个服务器(注:addServer没有连接到服务器的动作,所以在memcache进程没有启动的时候,执行addServer成功也会返回true)

2.4.2.参数

host 服务器域名或 IP

port 端口号,默认为 11211

persistent 是否使用常连接,默认为 TRUE

weight 权重,在多个服务器设置中占的比重

timeout 连接服务器失效的秒数,修改默认值 1 时要三思,有可能失去所有缓存方面的优势导致连接变得很慢

retry_interval 服务器连接失败时的重试频率,默认是 15 秒一次,如果设置为 -1 将禁止自动重试,当扩展中加载了 dynamically via dl() 时,无论本参数还是常连接设置参数都会失效。

每一个失败的服务器在失效前都有独自的生存期,选择后端请求时会被跳过而不服务于请求。一个过期的连接将成功的重新连接或者被标记为失败的连接等待下一次 重试。这种效果就是说每一个 web server 的子进程在服务于页面时的重试连接都跟他们自己的重试频率有关。

status 控制服务器是否被标记为 online,设置这个参数为 FALSE 并设置 retry_interval 为 -1 可以使连接失败的服务器被放到一个描述不响应请求的服务器池子中,对这个服务器的请求将失败,接受设置为失败服务器的设置,默认参数为 TRUE,代表该服务器可以被定义为 online。

failure_callback 失败时的回调函数,函数的两个参数为失败服务器的 hostname 和 port

2.4.3.返回值

成功返回 TRUE,失败返回 FALSE。

注:在测试addServer函数的时候我们主要测试了其参数retry_interval和status

2.4.4.范例

2.4.4.1.retry_interval参数的测试

$mem = new Memcache;
$is_add = $mem -> addServer(‘localhost‘ , 11211 , true , 1 , 1 , 15 , true ); // retrt_interval=15
$is_set = $mem -> set(‘key1‘ , ‘中华人民共和国‘);
?>

复制代码

  

上面的例子中如果localhost服务器down掉或是memcache守护进程当掉,执行请求的时候连接服务器失败时算起15秒后会自动重试连 接服务器,但是在这15秒内不会去连接这个服务器,就是只要有请求,没15秒就会尝试连接服务器,但是每个服务器连接重试是独立的。比如说我一次添加了两 个服务器一个是localhost,一个是172.16.100.60,它们分别是从各自连接失败那个时间算起,只要对各自服务器有请求就会每隔15秒去 连接各自的服务器的。

2.4.4.2.retry_interval和status结合使用的情况

$mem = new Memcache;
$is_add = $mem -> addServer(‘localhost‘ , 11211 , true , 1 , 1 , - 1 , false ); // retrt_interval=-1, status=false
$is_set = $mem -> set(‘key1‘ , ‘中华人民共和国‘);
?>

复制代码

登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製

在上面的retrt_interval=-1, status=false这种情况下,将连接失败的服务器放到一个不响应请求的一个池子中,因此对key分配的算法也就没有影响了,而他是立即返回错误失败还是故障转移还要看memcache.allow_failover的设置,执行set, add, replace,get等请求的时候都会失败返回false,即使memcache进程运行正常。

2.4.4.3.status参数的测试

除了与retry_interval结合使用,status单独使用的情况会对函数memcache::getServerStatu获得的结果产生影响

无论memcache进程的正常运行还是当掉,status为true的时候getServerStatus的结果都是true,反之则为false

但是在memcache进程正常运行的情况下,对set,add,replace,get等函数都没有影响。

2.5.Memcache::add2.5.1.说明

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



添加一个要缓存的数据如果作为这个缓存的数据的键在服务器上还不存在的情况下,

2.5.2.参数

key 缓存数据的键 其长度不能超过250个字符

var 值,整型将直接存储,其他类型将被序列化存储 ,其值最大为1M

flag 是否使用 zlib 压缩 ,当flag=MEMCACHE_COMPRESSED的时侯,数据很小的时候不会采用zlib压缩,只有数据达到一定大小才对数据进行zlib压缩。(没有具体的测试数据进行压缩的最小值是多少)

expire 过期时间,0 为永不过期,可使用 unix 时间戳格式或距离当前时间的秒数,设为秒数时不能大于 2592000(30 天)

2.5.3.返回值

成功返回 TRUE,失败返回 FALSE,如果这个键已经存在,其他方面memcache:;add()的行为与memcache::set相似

2.5.4.范例

$memcache_obj = memcache_connect( " localhost " , 11211 );
/* procedural API */
memcache_add( $memcache_obj , ‘var_key‘ , ‘test variable‘ , FALSE , 30 );
/* OO API */
$memcache_obj -> add(‘var_key‘ , ‘test variable‘ , FALSE , 30 );
?>

复制代码

登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
2.6.Memcache::replace2.6.1.说明

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

替换一个指定 已存在key 的的缓存变量内容

2.6.2.参数

key 缓存数据的键, 其长度不能超过250个字符

var 值,整型将直接存储,其他类型将被序列化存储,其值最大为1M

flag 是否使用 zlib 压缩 ,当flag=MEMCACHE_COMPRESSED的时侯,数据很小的时候不会采用zlib压缩,只有数据达到一定大小才对数据进行zlib压缩。(没有具体的测试数据进行压缩的最小值是多少)

expire 过期时间,0 为永不过期,可使用 unix 时间戳格式或距离当前时间的秒数,设为秒数时不能大于 2592000(30 天)

2.6.3.返回值

成功返回 TRUE,失败返回 FALSE。

2.6.4.范例

$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 );
?>

复制代码

登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
2.7.Memcache::set2.7.1.说明

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


设置一个指定 key 的缓存变量内容

2.7.2.参数

key 缓存数据的键, 其长度不能超过250个字符

var 值,整型将直接存储,其他类型将被序列化存储,其值最大为1M

flag 是否使用 zlib 压缩 ,当flag=MEMCACHE_COMPRESSED的时侯,数据很小的时候不会采用zlib压缩,只有数据达到一定大小才对数据进行zlib压缩。(没有具体的测试数据进行压缩的最小值是多少)

expire 过期时间,0 为永不过期,可使用 unix 时间戳格式或距离当前时间的秒数,设为秒数时不能大于 2592000(30 天)

2.7.3.返回值

成功返回 TRUE,失败返回 FALSE。

2.7.4.范例

/* procedural API */
/* connect to memcached server */
$memcache_obj = memcache_connect(‘memcache_host‘ , 11211 );
/*
set value of item with key ‘var_key‘
using 0 as flag value, compression is not used
expire time is 30 second
*/
memcache_set( $memcache_obj , ‘var_key‘ , ‘some variable‘ , 0 , 30 );
echo memcache_get( $memcache_obj , ‘var_key‘);
?>

复制代码

/* OO API */
$memcache_obj = new Memcache;
/* connect to memcached server */
$memcache_obj -> connect(‘memcache_host‘ , 11211 );
/*
set value of item with key ‘var_key‘, using on-the-fly compression
expire time is 50 seconds
*/
$memcache_obj -> set(‘var_key‘ , ‘some really big variable‘ , MEMCACHE_COMPRESSED , 50 );
echo $memcache_obj -> get(‘var_key‘);
?>

复制代码

登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
2.8.Memcache::get2.8.1.说明

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

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

获取某个 key 的变量缓存值

2.8.2.参数

key 缓存值的键

flags 如果是传址某个变量,获取缓存值被set或是add的flag结果将被存于该变量

2.8.3.返回值

返回缓存的指定 key 的变量内容或者是在失败或该变量的值不存在时返回 FALSE

如果传出的key的数组中的key都不存在,返回的结果是一个空数组,反之则返回key与缓存值相关联的关联数组

2.8.4.范例

/* 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‘);
/*
You also can use array of keys as a parameter.
If such item wasn‘t found at the server, the result
array simply will not include such key.
*/
/* procedural API */
$memcache_obj = memcache_connect(‘memcache_host‘ , 11211 );
$var = memcache_get( $memcache_obj , Array (‘some_key‘ , ‘another_key‘));
// 如果some_key,another_key不存在 $var = array();
//如果some_key,another_key存在 $var = 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‘));
?>

复制代码

2.9.Memcache::delete2.9.1.说明

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

删除某一个变量的缓存

2.9.2.参数

key 缓存的键 键值不能为null和‘’,当它等于前面两个值的时候php会有警告错误。

timeout 删除这项的时间,如果它等于0,这项将被立刻删除反之如果它等于30秒,那么这项被删除在30秒内

2.9.3.返回值

成功返回 TRUE,失败返回 FALSE。

2.9.4.范例

/* procedural API */
$memcache_obj = memcache_connect(‘memcache_host‘ , 11211 );
/* after 10 seconds item will be deleted by the server */
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 );
?>

复制代码

2.10.Memcache::flush2.10.1.说明

bool Memcache :: flush ( void )

清空所有缓存内容,不是真的删除缓存的内容,只是使所有变量的缓存过期,使内存中的内容被重写

2.10.2.返回值

成功返回 TRUE,失败返回 FALSE。

2.10.3.范例

/* 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 ();
?>

复制代码

2.11.Memcache::getExtendedStats2.11.1.说明

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

获取所有服务器扩展静态信息

2.11.2.参数

type 静态信息类型,有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes},依照一定规则协议这个可选参数是为了方便开发人员查看不同类别的信息而输入的标题

slabid 用于按指定类型联合设置 cache 堆为有效的片到堆中。缓存堆被被命令绑定到服务器上并被严格的用于调试用途

limit 用于按指定类型联合设置 cache 堆为输入的数字所限制的大小到堆,默认值为 100

2.11.3.返回值

返回一个由服务器扩展静态信息二维数组,失败时返回 FALSE

2.11.4.范例

$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 ] =>
)

复制代码

登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
登入後複製
2.12.Memcache::getStats2.12.1.说明

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

获取最后添加服务器静态信息 

2.12.2.参数

type       静态信息类型,有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes},依照一定规则协议这个可选参数是为了方便开发人员查看不同类别的信息而输入的标题

slabid   用于按指定类型联合设置 cache 堆为有效的片到堆中。缓存堆被被命令绑定到服务器上并被严格的用于调试用途

limit      用于按指定类型联合设置 cache 堆为输入的数字所限制的大小到堆,默认值为 100 

2.12.3.返回值

返回一个服务器静态信息数组,失败时返回 FALSE 

2.13.Memcache::getServerStatus2.13.1.说明

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

通过输入的 host 及 port 来获取相应的服务器信息

2.13.2.参数

host 服务器域名或 IP

port 端口号,默认为 11211

2.13.3.返回值

返回服务器状态,0 为失败,其他情况返回非 0 数字 

2.13.4.范例

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 );
?>

复制代码

2.14.Memcache::getVersion2.14.1.说明

string  Memcache :: getVersion ( void )

获取服务器的版本号信息 

2.14.2.返回值

成功返回服务器的版本号字符串,失败返回 FALSE 

2.14.3.范例

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 );
?>

复制代码

2.15.Memcache::setCompressThreshold

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

设置压缩极限

2.15.2.参数

threshold 设置控制自动压缩的变量长度的最小值

min_saving 指定的最低压缩比率,值必须介于 0 - 1 之间,默认为 0.2 代表 20% 的压缩比率 

2.15.3.返回值

成功返回 TRUE,失败返回 FALSE。 

2.15.4.范例

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 );
?>

复制代码

2.16.Memcache::setServerParams2.16.1.说明

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

复制代码

Memcache version 2.1.0 后增加的函数,运行时设置服务器参数

2.16.2.参数

host           服务器域名或 IP

port 端口号,默认为 11211

timeout     超时连接失效的秒数,修改默认值 1 时要三思,有可能失去所有缓存方面的优势导致连接变得很慢

retry_interval     服务器连接失败时的重试频率,默认是 15 秒一次,如果设置为 -1 将禁止自动重试,当扩展中加载了 dynamically via dl() 时,无论本参数还是常连接设置参数都会失效。 每一个失败的服务器在失效前都有独自的生存期,选择后端请求时会被跳过而不服务于请求。一个过期的连接将成功的重新连接或者被标记为失败的连接等待下一次 重试。这种效果就是说每一个 web server 的子进程在服务于页面时的重试连接都跟他们自己的重试频率有关。

status    控制服务器是否被标记为 online,设置这个参数为 FALSE 并设置 retry_interval 为 -1 可以使连接失败的服务器被放到一个描述不响应请求的服务器池子中,对这个服务器的请求将失败,接受设置为失败服务器的设置,默认参数为 TRUE,代表该服务器可以被定义为 online。

failure_callback    失败时的回调函数,函数的两个参数为失败服务器的 hostname 和 port 

2.16.3.返回值

成功返回 TRUE,失败返回 FALSE。 

2.16.4.范例

php
function  _callback_memcache_failure( $host ,  $port )
{
print  " memcache ‘ $host : $port ‘ failed " ;
}
/*  OO API  */
$memcache  =  new  Memcache;
//  Add the server in offline mode
$memcache -> addServer(‘memcache_host‘ ,  11211 ,  FALSE ,  1 ,  1 ,  - 1 ,  FALSE );
//  Bring the server back online
$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‘);
?>

复制代码

2.17.Memcache::increment2.17.1.说明

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

给指定 key 的缓存变量一个增值,如果该变量不是数字时不会被转化为数字,这个增值将会加到该变量原有的数字之上,变量不存在不会新增变量,对于压缩存储的变量不要使用本函数因为相应的取值方法会失败。 

2.17.2.参数

key 缓存值的键

var 值,整型将直接存储,其他类型将被序列化存储 

2.17.3.返回值

成功返回新的变量值,失败返回 FALSE。

2.17.4.范例

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 );
?>

复制代码

2.18.Memcache::decrement2.18.2.说明

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

给指定 key 的缓存变量一个递减值,与 increment 操作类似,将在原有变量基础上减去这个值,该项的值将会在转化为数字后减去,新项的值不会小于 0,对于压缩存储的变量不要使用本函数因为相应的取值方法会失败。 

2.18.2.参数

key 缓存值的键

var 值,整型将直接存储,其他类型将被序列化存储 

2.18.3.返回值

成功返回新的变量值,失败返回 FALSE。 

2.18.4.范例

php
/*  procedural API  */
$memcache_obj  =  memcache_connect(‘memcache_host‘ ,  11211 );
/*  decrement item by 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 );
?>

复制代码

2.19.memcache_debug2.19.1.说明

bool memcache_debug ( bool  $on_off  )

设置 memcache 的调试器是否开启,值为 TRUE 或 FALSE。 受影响于 php 安装时是否使用了 --enable-debug 选项,如果使用了该函数才会返回 TRUE,其他情况将始终返回 FALSE。 

2.19.2.参数

on_off 设置调试模式是否开启,TRUE 为开启,FALSE 为关闭

2.19.3.返回值

php 安装时如果使使用了 --enable-debug 选项返回 TRUE,否则将返回 FALSE。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? 說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP的持久相關性:它還活著嗎? PHP的持久相關性:它還活著嗎? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型? PHP類型提示如何起作用,包括標量類型,返回類型,聯合類型和無效類型? Apr 17, 2025 am 12:25 AM

PHP類型提示提升代碼質量和可讀性。 1)標量類型提示:自PHP7.0起,允許在函數參數中指定基本數據類型,如int、float等。 2)返回類型提示:確保函數返回值類型的一致性。 3)聯合類型提示:自PHP8.0起,允許在函數參數或返回值中指定多個類型。 4)可空類型提示:允許包含null值,處理可能返回空值的函數。

PHP和Python:代碼示例和比較 PHP和Python:代碼示例和比較 Apr 15, 2025 am 12:07 AM

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP與其他語言:比較 PHP與其他語言:比較 Apr 13, 2025 am 12:19 AM

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

See all articles