taoCMS是基于php+sqlite/mysql的国内最小(100Kb左右)的功能完善、开源免费的CMS管理系统

php操作memcache的使用测试总结

2011-06-03

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_ALLAvailable since memcache 2.0.2.
memcache.max_failover_attempts"20"PHP_INI_ALLAvailable since memcache 2.1.0.
memcache.chunk_size"8192"PHP_INI_ALLAvailable since memcache 2.0.2.
memcache.default_port"11211"PHP_INI_ALLAvailable since memcache 2.0.2.
memcache.hash_strategy"standard"PHP_INI_ALLAvailable since memcache 2.2.0.
memcache.hash_function"crc32"PHP_INI_ALLAvailable since memcache 2.2.0.
session.save_handler"files"PHP_INI_ALLSupported since memcache 2.1.2
session.save_path""PHP_INI_ALLSupported 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_COMPRESSEDinteger用于调整在使用 Memcache::set(), Memcache::add() 和 Memcache::replace() 几个函数时的压缩比率。
MEMCACHE_HAVE_SESSIONinteger如果通信对话的处理(session handler)被允许使用其值为 1,其他情况值为 0。

2Memcache Functions 函数列表

2.1.Memcache::connect

2.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 $memcache_obj = memcache_connect('memcache_host', 11211); $memcache = new Memcache; $memcache->connect('memcache_host', 11211); ?>

2.2.Memcache::pconnect

2.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.范例

<?php $memcache_obj = memcache_pconnect('memcache_host', 11211); $memcache_obj = new Memcache; $memcache_obj->pconnect('memcache_host', 11211); ?>

2.3.Memcache::close

2.3.1.说明

bool Memcache::close ( void )

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

2.3.2.返回值

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

2.3.3.范例

<?php $memcache_obj = memcache_connect('memcache_host', 11211); memcache_close($memcache_obj); $memcache_obj = new Memcache; $memcache_obj->connect('memcache_host', 11211); $memcache_obj->close(); ?>

2.4.Memcache::addServer

2.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参数的测试

<?php $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秒内不会去连接这个服务器,就是

类别:技术文章 | 阅读:221610 | 评论:0 | 标签:php memcache

想收藏或者和大家分享这篇好文章→

“php操作memcache的使用测试总结 ”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

taoCMS发布taoCMS 3.0.2(最后更新21年03月15日),请大家速速升级,欢迎大家试用和提出您宝贵的意见建议。

捐助与联系

☟请使用新浪微博联系我☟

☟在github上follow我☟

标签云