配色: 字号:
PHP session使用 memcached的注意几个细节
2016-10-28 | 阅:  转:  |  分享 
  
@ini_set(''session.save_path'',$mem_server_list);,$mem_server_list对应的列表
参数和Memcache::addServer一样多个服务器用,分开连接比如@ini_set(''session.save_pa
th'',''tcp://192.168.1.1:1111?persistent=1,tcp://192.168.1.125:1255
5,192.168.1.3:1110'');???1.简介memcache模块是一个高效的保卫历程,供给用于内存缓存的历程式法式和面
向工具的便利的接口,出格是对付计划动态web法式时削减对数据库的拜候。memcache也供给用于通讯对话(session_han
dler)的处置。更多Memcache模块相干信息可以到?http://www.danga.com/memcached/htt
p://www.danga.com/memcached/?查阅。1.1.memcache在php.ini中的设置装备摆设项列表m
emcache在php.ini中的设置装备摆设项列表名称默认值是否可变转变日记memcache.allow_failover“1”
PHP_INI_ALLAvailablesincememcache2.0.2.memcache.max_failover_a
ttempts"20"PHP_INI_ALLAvailablesincememcache2.1.0.memcache.chu
nk_size"8192"PHP_INI_ALLAvailablesincememcache2.0.2.memcache.d
efault_port"11211"PHP_INI_ALLAvailablesincememcache2.0.2.memca
che.hash_strategy"standard"PHP_INI_ALLAvailablesincememcache2.
2.0.memcache.hash_function"crc32"PHP_INI_ALLAvailablesincememca
che2.2.0.session.save_handler"files"PHP_INI_ALLSupportedsincem
emcache2.1.2session.save_path""PHP_INI_ALLSupportedsincememcac
he2.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.sav
e_handler?string经由过程设置这个值为memcache来确定利用memcache用于通讯对话的处置(sessi
onhandler)。session.save_path?string界说用于通话存储的各办事器链接的分开标记,比方:“tcp
://host1:11211,tcp://host2:11211”。每办事器个链接可以包罗被接管于该办事器的参数,比力近似利用
Memcache::addServer()来添加的办事器,比方:“tcp://host1:11211?persistent=1
&weight=1&timeout=1&retry_interval=15”。1.3.me
mcache常量列表memcache常量列表名称范例形貌MEMCACHE_COMPRESSEDinteger用于调解在利用Me
mcache::set(),Memcache::add()和Memcache::replace()几个函数时的压缩比率。M
EMCACHE_HAVE_SESSIONinteger若是通讯对话的处置(sessionhandler)被许可利用其值为1,其
他环境值为0。2MemcacheFunctions函数列表2.1.Memcache::connect2.1.1.申明boo
lMemcache::connect(string$host[,int$port[,int$timeout]
])毗连memcache办事器2.1.2.参数$host(string)办事器域名或ip$port(int)办事器tcp端标
语,默认值是11211$timeout毗连memcache历程的失效时候,在点窜它的默认值1的时辰要三思,以免落空全部memca
che缓存的上风导致毗连变得很慢。2.1.3.返回值若是乐成则返回true,失败则返回false2.1.4.典范/proce
duralAPI/$memcache_obj=memcache_connect(''memcache_host'',112
11);/OOAPI/$memcache=newMemcache;$memcache->connect(''memc
ache_host'',11211);?>2.2.Memcache::pconnect2.2.1.申明boolMemcache
::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,失败则返回false2.2.4.典范/proceduralAPI
/$memcache_obj=memcache_pconnect(''memcache_host'',11211);/OO
API/$memcache_obj=newMemcache;$memcache_obj->pconnect(''memca
che_host'',11211);?>2.3.Memcache::close2.3.1.申明boolMemcache::cl
ose(void)封闭工具(对常毗连不起感化)2.3.2.返回值若是乐成则返回true,失败则返回false2.3.3.
典范/proceduralAPI/$memcache_obj=memcache_connect(''memcache_
host'',11211);/dosomethinghere../memcache_close($memca
che_obj);/OOAPI/$memcache_obj=newMemcache;$memcache_obj->
connect(''memcache_host'',11211);/dosomethinghere../$memc
ache_obj->close();?>2.4.Memcache::addServer2.4.1.申明boolMemcache
::addServer(string$host[,int$port[,bool$persistent[,in
t$weight[,int$timeout[,int$retry_interval[,bool$status
[,callback$failure_callback]]]]]]])向工具添加一个办事器(注:addServer没有毗
连到办事器的行动,以是在memcache历程没有启动的时辰,实行addServer乐成也会返回true)2.4.2.参数host
办事器域名或IPport端标语,默以为11211persistent是否利用常毗连,默以为TRUEweight网站指
数,在多个办事器设置中占的比重timeout毗连办事器失效的秒数,点窜默认值1时要三思,有大概落空全部缓存方面的上风导致毗连
变得很慢retry_interval办事器毗连失败时的重试频率,默认是15秒一次,若是设置为-1将克制主动重试,当扩展中
加载了dynamicallyviadl()时,无论本参数仍是常毗连设置参数城市失效。每一个失败的办事器在失效前都有独自的保
存期,选择后端恳求时会被跳过而不平务于恳求。一个过时的毗连将乐成的从头毗连大概被标识表记标帜为失败的毗连期待下一次重试。这种结
果便是说每一个webserver的子历程在办事于页面时的重试毗连都跟他们本身的重试频率有关。status节制办事器是否被标
识表记标帜为online,设置这个参数为FALSE并设置retry_interval为-1可以使毗连失败的办事器被放
到一个形貌不相应恳求的办事器池子中,对这个办事器的恳求将失败,接管设置为失败办事器的设置,默认参数为TRUE,代表该办事器可以被
界说为online。failure_callback失败时的回调函数,函数的两个参数为失败办事器的hostname和po
rt2.4.3.返回值乐成返回TRUE,失败返回FALSE。注:在测试addServer函数的时辰我们首要测试了其参数ret
ry_interval和status2.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=newMemcache;$is_add=$mem->addServer(''loca
lhost'',11211,true,1,1,-1,false);//retrt_interval=-1,stat
us=false$is_set=$mem->set(''key1'',''中华人民共和国'');?>在上面的retrt_inter
val=-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.申明boolMemcache::add(string$key,mix
ed$var[,int$flag[,int$expire]])?添加一个要缓存的数据若是作为这个缓存的数据的键在
办事器上还不存在的环境下,2.5.2.参数key缓存数据的键其长度不克不及跨越250个字符var值,整型将直接存储,其他范
例将被序列化存储,其值最大为1Mflag是否利用zlib压缩,当flag=MEMCACHE_COMPRESSED的时侯,
数据很小的时辰不会接纳zlib压缩,只稀有据到达必然巨细才对数据举行zlib压缩。(没有详细的测试数据举行压缩的最小值是几多)e
xpire过时时候,0为永不外期,可利用unix时候戳格局或间隔当前时候的秒数,设为秒数时不克不及大于2592000(3
0天)2.5.3.返回值乐成返回TRUE,失败返回FALSE,若是这个键已经存在,其他方面memcache:;add()的举
动与memcache::set相似2.5.4.典范$memcache_obj=memcache_connect("local
host",11211);/proceduralAPI/memcache_add($memcache_obj,''va
r_key'',''testvariable'',FALSE,30);/OOAPI/$memcache_obj->ad
d(''var_key'',''testvariable'',FALSE,30);?>2.6.Memcache::replace2
.6.1.申明boolMemcache::replace(string$key,mixed$var[,int
$flag[,int$expire]])替代一个指定已存在key的的缓存变量内容2.6.2.参数key缓存数据的键
,其长度不克不及跨越250个字符var值,整型将直接存储,其他范例将被序列化存储,其值最大为1Mflag是否利用zlib
压缩,当flag=MEMCACHE_COMPRESSED的时侯,数据很小的时辰不会接纳zlib压缩,只稀有据到达必然巨细才对数据
举行zlib压缩。(没有详细的测试数据举行压缩的最小值是几多)expire过时时候,0为永不外期,可利用unix时候戳格
局或间隔当前时候的秒数,设为秒数时不克不及大于2592000(30天)2.6.3.返回值乐成返回TRUE,失败返回FALS
E。2.6.4.典范$memcache_obj=memcache_connect(''memcache_host'',11211
);/proceduralAPI/memcache_replace($memcache_obj,"test_key",
"somevariable",FALSE,30);/OOAPI/$memcache_obj->replace("
test_key","somevariable",FALSE,30);?>2.7.Memcache::set2.7.1.
申明boolMemcache::set(string$key,mixed$var[,int$flag[,i
nt$expire]])?设置一个指定key的缓存变量内容2.7.2.参数key缓存数据的键,其长度不克不及跨越25
0个字符var值,整型将直接存储,其他范例将被序列化存储,其值最大为1Mflag是否利用zlib压缩,当flag=MEM
CACHE_COMPRESSED的时侯,数据很小的时辰不会接纳zlib压缩,只稀有据到达必然巨细才对数据举行zlib压缩。(没有
详细的测试数据举行压缩的最小值是几多)expire过时时候,0为永不外期,可利用unix时候戳格局或间隔当前时候的秒数,设
为秒数时不克不及大于2592000(30天)2.7.3.返回值乐成返回TRUE,失败返回FALSE。2.7.4.典范/
proceduralAPI//connecttomemcachedserver/$memcache_obj=
memcache_connect(''memcache_host'',11211);/setvalueofitemwit
hkey''var_key''using0asflagvalue,compressionisnotusedexpi
retimeis30second/memcache_set($memcache_obj,''var_key'',''som
evariable'',0,30);echomemcache_get($memcache_obj,''var_key'');?
>/OOAPI/$memcache_obj=newMemcache;/connecttomemcached
server/$memcache_obj->connect(''memcache_host'',11211);/setva
lueofitemwithkey''var_key'',usingon-the-flycompressionexpir
etimeis50seconds/$memcache_obj->set(''var_key'',''somereally
bigvariable'',MEMCACHE_COMPRESSED,50);echo$memcache_obj->get(''
var_key'');?>2.8.Memcache::get2.8.1.申明stringMemcache::get(stri
ng$key[,int&$flags])arrayMemcache::get(array$keys[,ar
ray&$flags])获取某个key的变量缓存值2.8.2.参数key缓存值的键flags若是是传址某个变量,获取
缓存值被set或是add的flag成果将被存于该变量2.8.3.返回值返回缓存的指定key的变量内容大概是在失败或该变量的值
不存在时返回FALSE若是传出的key的数组中的key都不存在,返回的成果是一个空数组,反之则返回key与缓存值相干联的联系关
系数组2.8.4.典范/proceduralAPI/$memcache_obj=memcache_connect(''
memcache_host'',11211);$var=memcache_get($memcache_obj,''some_k
ey'');/OOAPI/$memcache_obj=newMemcache;$memcache_obj->conn
ect(''memcache_host'',11211);$var=$memcache_obj->get(''some_key'')
;/Youalsocanusearrayofkeysasaparameter.Ifsuchitemwas
n''tfoundattheserver,theresultarraysimplywillnotinclude
suchkey.//proceduralAPI/$memcache_obj=memcache_connect(''
memcache_host'',11211);$var=memcache_get($memcache_obj,Array(''
some_key'',''another_key''));//若是some_key,another_key不存在$var=arr
ay();//若是some_key,another_key存在$var=array(''some_key''=>''缓存值'',''
another_key''=>''缓存值'');/OOAPI/$memcache_obj=newMemcache;$me
mcache_obj->connect(''memcache_host'',11211);$var=$memcache_obj-
>get(Array(''some_key'',''second_key''));?>2.9.Memcache::delete2.9.1
.申明boolMemcache::delete(string$key[,int$timeout])删除某一个
变量的缓存2.9.2.参数key缓存的键键值不克不及为null和''’,当它即是前面两个值的时辰php会有告诫错误。timeou
t删除这项的时候,若是它即是0,这项将被立即删除反之若是它即是30秒,那么这项被删除在30秒内2.9.3.返回值乐成返回TR
UE,失败返回FALSE。2.9.4.典范/proceduralAPI/$memcache_obj=memcach
e_connect(''memcache_host'',11211);/after10secondsitemwillb
edeletedbytheserver/memcache_delete($memcache_obj,''key_to_
delete'',10);/OOAPI/$memcache_obj=newMemcache;$memcache_o
bj->connect(''memcache_host'',11211);$memcache_obj->delete(''key_to
_delete'',10);?>2.10.Memcache::flush2.10.1.申明boolMemcache::flus
h(void)清空全部缓存内容,不是真的删除缓存的内容,只是使全部变量的缓存过时,使内存中的内容被重写2.10.2.返回值
乐成返回TRUE,失败返回FALSE。2.10.3.典范/proceduralAPI/$memcache_obj
=memcache_connect(''memcache_host'',11211);memcache_flush($memcac
he_obj);/OOAPI/$memcache_obj=newMemcache;$memcache_obj->c
onnect(''memcache_host'',11211);$memcache_obj->flush();?>2.11.Memc
ache::getExtendedStats2.11.1.申明arrayMemcache::getExtendedStats
([string$type[,int$slabid[,int$limit]]])获取全部办事器扩展静态信息2.
11.2.参数type静态信息范例,有用值包罗{reset,malloc,maps,cachedump,slabs,i
tems,sizes},遵照必然法则和谈这个可选参数是为了便利开辟职员检察分歧种别的信息而输入的题目slabid用于按指定范例
结合设置cache堆为有用的片到堆中。缓存堆被被号令绑定到办事器上并被严酷的用于调试用途limit用于按指定范例结合设置c
ache堆为输入的数字所限定的巨细到堆,默认值为1002.11.3.返回值返回一个由办事器扩展静态信息二维数组,失败时返回
FALSE2.11.4.典范$memcache_obj=newMemcache;$memcache_obj->addServ
er(''memcache_host'',11211);$memcache_obj->addServer(''failed_host''
,11211);$stats=$memcache_obj->getExtendedStats();print_r($sta
ts);?>输出成果Array([memcache_host:11211]=>Array([pid]=>3756[upti
me]=>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_co
nnections]=>807[connection_structures]=>13[cmd_get]=>9748[c
md_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.申明arrayM
emcache::getStats([string$type[,int$slabid[,int$limit]]
])获取末了添加办事器静态信息2.12.2.参数type静态信息范例,有用值包罗{reset,malloc,maps,c
achedump,slabs,items,sizes},遵照必然法则和谈这个可选参数是为了便利开辟职员检察分歧种别的信息而输
入的题目slabid用于按指定范例结合设置cache堆为有用的片到堆中。缓存堆被被号令绑定到办事器上并被严酷的用于调试用途l
imit用于按指定范例结合设置cache堆为输入的数字所限定的巨细到堆,默认值为1002.12.3.返回值返回一个办事器
静态信息数组,失败时返回FALSE2.13.Memcache::getServerStatus2.13.1.申明intMem
cache::getServerStatus(string$host[,int$port])经由过程输入的ho
st及port来获取响应的办事器信息2.13.2.参数host办事器域名或IPport端标语,默以为112112.1
3.3.返回值返回办事器状况,0为失败,其他环境返回非0数字2.13.4.典范/OOAPI/$memcache
=newMemcache;$memcache->addServer(''memcache_host'',11211);echo
$memcache->getServerStatus(''memcache_host'',11211);/procedural
API/$memcache=memcache_connect(''memcache_host'',11211);echom
emcache_get_server_status($memcache,''memcache_host'',11211);?>2.
14.Memcache::getVersion2.14.1.申明stringMemcache::getVersion(vo
id)获取办事器的版本号信息2.14.2.返回值乐成返回办事器的版本号字符串,失败返回FALSE2.14.3.典范/OO
API/$memcache=newMemcache;$memcache->connect(''memcache_host
'',11211);echo$memcache->getVersion();/proceduralAPI/$memca
che=memcache_connect(''memcache_host'',11211);echomemcache_get_
version($memcache);?>2.15.Memcache::setCompressThresholdboolMemc
ache::setCompressThreshold(int$threshold[,float$min_savings
])设置压缩极限2.15.2.参数threshold设置节制主动压缩的变量长度的最小值min_saving指定的最低压缩比
率,值必需介于0-1之间,默以为0.2代表20%的压缩比率2.15.3.返回值乐成返回TRUE,失败返回FA
LSE。2.15.4.典范/OOAPI/$memcache_obj=newMemcache;$memcache_o
bj->addServer(''memcache_host'',11211);$memcache_obj->setCompressT
hreshold(20000,0.2);/proceduralAPI/$memcache_obj=memcache
_connect(''memcache_host'',11211);memcache_set_compress_threshold(
$memcache_obj,20000,0.2);?>2.16.Memcache::setServerParams2.16.1
.申明boolMemcache::setServerParams(string$host[,int$port[,
int$timeout[,int$retry_interval[,bool$status[,callback
$failure_callback]]]]])Memcacheversion2.1.0后增添的函数,运行时设置办事器参数
2.16.2.参数host办事器域名或IPport端标语,默以为11211timeout超时毗连失效的秒数,点窜默认值
1时要三思,有大概落空全部缓存方面的上风导致毗连变得很慢retry_interval办事器毗连失败时的重试频率,默认是15
秒一次,若是设置为-1将克制主动重试,当扩展中加载了dynamicallyviadl(‘www.mntuku.cn’)
时,无论本参数仍是常毗连设置参数城市失效。每一个失败的办事器在失效前都有独自的保存期,选择后端恳求时会被跳过而不平务于恳求。一个
过时的毗连将乐成的从头毗连大概被标识表记标帜为失败的毗连期待下一次重试。这种结果便是说每一个webserver的子历程在办
事于页面时的重试毗连都跟他们本身的重试频率有关。status节制办事器是否被标识表记标帜为online,设置这个参数为FA
LSE并设置retry_interval为-1可以使毗连失败的办事器被放到一个形貌不相应恳求的办事器池子中,对这个办事器
的恳求将失败,接管设置为失败办事器的设置,默认参数为TRUE,代表该办事器可以被界说为online。failure_callb
ack失败时的回调函数,函数的两个参数为失败办事器的hostname和port2.16.3.返回值乐成返回TRUE,失败
返回FALSE。2.16.4.典范function_callback_memcache_failure($host,$por
t){print"memcache''$host:$port''failed";}/OOAPI/$memcache=
newMemcache;//Addtheserverinofflinemode$memcache->addServ
er(''memcache_host'',11211,FALSE,1,1,-1,FALSE);//Bringthes
erverbackonline$memcache->setServerParams(''memcache_host'',1121
1,1,15,TRUE,''_callback_memcache_failure'');/proceduralAPI
/$memcache_obj=memcache_connect(''memcache_host'',11211);memcach
e_set_server_params($memcache_obj,''memcache_host'',11211,1,15,
TRUE,''_callback_memcache_failure'');?>2.17.Memcache::increment2.
17.1.申明intMemcache::increment(string$key[,int$value])给
指定key的缓存变量一个增值,若是该变量不是数字时不会被转化为数字,这个增值将会加到该变量原有的数字之上,变量不存在不会新增变
量,对付压缩存储的变量不要利用本函数由于响应的取值方式会失败。2.17.2.参数key缓存值的键var值,整型将直接存储,其
他范例将被序列化存储2.17.3.返回值乐成返回新的变量值,失败返回FALSE。2.17.4.典范/procedural
API/$memcache_obj=memcache_connect(''memcache_host'',11211);/
incrementcounterby2/$current_value=memcache_increment($me
mcache_obj,''counter'',2);/OOAPI/$memcache_obj=newMemcach
e;$memcache_obj->connect(''memcache_host'',11211);/incrementcounterby3/$current_value=$memcache_obj->increment(''counter'',3);?>2.18.Memcache::decrement2.18.2.申明intMemcache::decrement(string$key[,int$value])给指定key的缓存变量一个递减值,与increment操纵近似,将在原有变量根本上减去这个值,该项的值将会在转化为数字后减去,新项的值不会小于0,对付压缩存储的变量不要利用本函数由于响应的取值方式会失败。2.18.2.参数key缓存值的键var值,整型将直接存储,其他范例将被序列化存储2.18.3.返回值乐成返回新的变量值,失败返回FALSE。2.18.4.典范/proceduralAPI/$memcache_obj=memcache_connect(''memcache_host'',11211);/decrementitemby2/$new_value=memcache_decrement($memcache_obj,''test_item'',2);/OOAPI/$memcache_obj=newMemcache;$memcache_obj->connect(''memcache_host'',11211);/decrementitemby3/$new_value=$memcache_obj->decrement(''test_item'',3);?>2.19.memcache_debug2.19.1.申明boolmemcache_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。from:http://www.doudou8.net/post/cid~1501
献花(0)
+1
(本文系雨亭之东首藏)