php操作memcache的使用【轉(zhuǎn)】,php操作memcache_PHP教程
Jul 12, 2016 am 08:55 AMphp操作memcache的使用【轉(zhuǎn)】,php操作memcache
1.簡介
Memcache是danga.com的一個項目,最早是為 LiveJournal 服務(wù)的,目前全世界不少人使用這個緩存項目來構(gòu)建自己大負載的網(wǎng)站,來分擔數(shù)據(jù)庫的壓力。它可以應(yīng)對任意多個連接,使用非阻塞的網(wǎng)絡(luò)IO。由于它的工作機 制是在內(nèi)存中開辟一塊空間,然后建立一個HashTable,Memcached自管理這些HashTable。Memcache官方網(wǎng) 站:http://www.danga.com/memcached,更多詳細的信息可以來這里了解。
為什么會有Memcache和memcached兩種名稱?其實Memcache是這個項目的名稱,而memcached是它服務(wù)器端的主程序文件名,知道我的意思了把~~~~。一個是項目名稱,一個是主程序文件名。
Memcache的安裝
分為兩個過程:memcache服務(wù)器端的安裝和memcached客戶端的安裝。
所謂服務(wù)器端的安裝就是在服務(wù)器(一般都是linux系統(tǒng))上安裝Memcache實現(xiàn)數(shù)據(jù)的存儲。
所謂客戶端的安裝就是指php(或者其他程序,Memcache還有其他不錯的api接口提供)去使用服務(wù)器端的Memcache提供的函數(shù),需要php添加擴展。
?
memcache模塊是一個高效的守護進程,提供用于內(nèi)存緩存的過程式程序和面向?qū)ο蟮姆奖愕慕涌?,特別是對于設(shè)計動態(tài)web程序時減少對數(shù)據(jù)庫的訪問。
memcache也提供用于通信對話(session_handler)的處理。
更多Memcache 模塊相關(guān)信息可以到?http://www.danga.com/memcached/?查閱。
?1.1.memcache在php.ini中的配置項列表
名稱 | 默認值 | 是否可變 | 改變?nèi)罩?/strong> |
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 |
有關(guān) PHP_INI_* 常量進一步的細節(jié)與定義參見PHP手冊php.ini 配置選項。
1.2.以下是配置項的簡要解釋
memcache.allow_failover?Boolean
在錯誤時是否透明的故障轉(zhuǎn)移到其他服務(wù)器上處理(注:故障轉(zhuǎn)移是動詞)。
memcache.max_failover_attempts?integer
定義服務(wù)器的數(shù)量類設(shè)置和獲取數(shù)據(jù),只聯(lián)合 memcache.allow_failover 一同使用。
memcache.chunk_size?integer
數(shù)據(jù)將會被分成指定大?。╟hunk_size)的塊來傳輸,這個值(chunk_size)越小,寫操作的請求就越多,如果發(fā)現(xiàn)其他的無法解釋的減速,請試著將這個值增大到32768.
memcache.default_port?string
當連接memcache服務(wù)器的時候,如果沒有指定端口這個默認的tcp端口將被用。
memcache.hash_strategy?string
控制在映射 key 到服務(wù)器時使用哪種策略。設(shè)置這個值一致能使hash 算法始終如一的使用于服務(wù)器接受添加或者刪除池中變量時將不會被重新映射。設(shè)置這個值以標準的結(jié)果在舊的策略被使用時。
memcache.hash_function?string
控制哪種 hsah 函數(shù)被應(yīng)用于 key映射 到服務(wù)器過程中,默認值“crc32”使用 CRC32 算法,而“fnv”則表示使用 FNV-1a 算法。
session.save_handler?string
通過設(shè)置這個值為memcache來確定使用 memcache 用于通信對話的處理(session handler)。
session.save_path?string
定義用于通話存儲的各服務(wù)器鏈接的分隔符號,例如:“tcp://host1:11211, tcp://host2:11211”。
每服務(wù)器個鏈接可以包含被接受于該服務(wù)器的參數(shù),比較類似使用 Memcache::addServer() 來添加的服務(wù)器,例如:“tcp://host1:11211?persistent=1&weight=1&timeout=1& amp; amp;retry_interval=15”。
?1.3.memcache常量列表
名稱 | 類型 | 描述 |
MEMCACHE_COMPRESSED | integer | 用于調(diào)整在使用 Memcache::set(), Memcache::add() 和 Memcache::replace() 幾個函數(shù)時的壓縮比率。 |
MEMCACHE_HAVE_SESSION | integer | 如果通信對話的處理(session handler)被允許使用其值為 1,其他情況值為 0。 |
2Memcache Functions 函數(shù)列表
2.1.Memcache::connect
2.1.1.說明
bool?Memcache::connect?(?string?$host?[,?int?$port?[,?int?$timeout?]]?)連接memcache服務(wù)器
2.1.2.參數(shù)
$host(string)? 服務(wù)器域名或ip
$port(int)? 服務(wù)器tcp端口號,默認值是11211
$timeout? 連接memcache進程的失效時間,在修改它的默認值1的時候要三思,以免失去所有memcache緩存的優(yōu)勢導致連接變得很慢。
2.1.3.返回值
如果成功則返回true,失敗則返回false
2.1.4.范例


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


2.2.Memcache::pconnect
2.2.1.說明
bool?Memcache::pconnect?(?string?$host?[,?int?$port?[,?int?$timeout?]]?)以常連接方式連接服務(wù)器
2.2.2.參數(shù)
$host(string)? 服務(wù)器域名或ip
$port(int)? 服務(wù)器tcp端口號,默認值是11211
$timeout? 連接memcache進程的失效時間,在修改它的默認值1的時候要三思,以免失去所有memcache緩存的優(yōu)勢導致連接變得很慢。
2.2.3.返回值
如果成功則返回true,失敗則返回false
2.2.4.范例


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


2.3.Memcache::close
2.3.1.說明
bool?Memcache::close?(?void?)關(guān)閉對象 (對常連接不起作用)
2.3.2.返回值
如果成功則返回true,失敗則返回false
2.3.3.范例


$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::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?]]]]]]]?)向?qū)ο筇砑右粋€服務(wù)器(注:addServer沒有連接到服務(wù)器的動作,所以在memcache進程沒有啟動的時候,執(zhí)行addServer成功也會返回true)
2.4.2.參數(shù)
host?????????????? 服務(wù)器域名或 IP
port?????????????? 端口號,默認為 11211
persistent???????? 是否使用常連接,默認為 TRUE
weight???????????? 權(quán)重,在多個服務(wù)器設(shè)置中占的比重
timeout????????? 連接服務(wù)器失效的秒數(shù),修改默認值 1 時要三思,有可能失去所有緩存方面的優(yōu)勢導致連接變得很慢
retry_interval??? 服務(wù)器連接失敗時的重試頻率,默認是 15 秒一次,如果設(shè)置為 -1 將禁止自動重試,當擴展中加載了 dynamically via dl() 時,無論本參數(shù)還是常連接設(shè)置參數(shù)都會失效。
????????????????????????? 每一個失敗的服務(wù)器在失效前都有獨自的生存期,選擇后端請求時會被跳過而不服務(wù)于請求。一個過期的連接將成功的重新連接或者被標記為失敗的連接等待下一次 重試。這種效果就是說每一個 web server 的子進程在服務(wù)于頁面時的重試連接都跟他們自己的重試頻率有關(guān)。
status???????????? 控制服務(wù)器是否被標記為 online,設(shè)置這個參數(shù)為 FALSE 并設(shè)置 retry_interval 為 -1 可以使連接失敗的服務(wù)器被放到一個描述不響應(yīng)請求的服務(wù)器池子中,對這個服務(wù)器的請求將失敗,接受設(shè)置為失敗服務(wù)器的設(shè)置,默認參數(shù)為 TRUE,代表該服務(wù)器可以被定義為 online。
failure_callback?? 失敗時的回調(diào)函數(shù),函數(shù)的兩個參數(shù)為失敗服務(wù)器的 hostname 和 port
2.4.3.返回值
成功返回 TRUE,失敗返回 FALSE。
注:在測試addServer函數(shù)的時候我們主要測試了其參數(shù)retry_interval和status
2.4.4.范例
2.4.4.1.retry_interval參數(shù)的測試
$mem?=?new?Memcache;$is_add?=?$mem->addServer(‘localhost‘,?11211,?true,?1,?1,?15,?true);?//?retrt_interval=15
$is_set?=?$mem->set(‘key1‘,?‘中華人民共和國‘);
?>
上面的例子中如果localhost服務(wù)器down掉或是memcache守護進程當?shù)?,?zhí)行請求的時候連接服務(wù)器失敗時算起15秒后會自動重試連 接服務(wù)器,但是在這15秒內(nèi)不會去連接這個服務(wù)器,就是只要有請求,沒15秒就會嘗試連接服務(wù)器,但是每個服務(wù)器連接重試是獨立的。比如說我一次添加了兩 個服務(wù)器一個是localhost,一個是172.16.100.60,它們分別是從各自連接失敗那個時間算起,只要對各自服務(wù)器有請求就會每隔15秒去 連接各自的服務(wù)器的。
2.4.4.2.retry_interval和status結(jié)合使用的情況
$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這種情況下,將連接失敗的服務(wù)器放到一個不響應(yīng)請求的一個池子中,因此對key分配的算法也就沒有影響了,而他是立即返回錯誤失 敗還是故障轉(zhuǎn)移還要看memcache.allow_failover的設(shè)置,執(zhí)行set, add, replace,get等請求的時候都會失敗返回false,即使memcache進程運行正常。
2.4.4.3.status參數(shù)的測試
除了與retry_interval結(jié)合使用,status單獨使用的情況會對函數(shù)memcache::getServerStatu獲得的結(jié)果產(chǎn)生影響
無論memcache進程的正常運行還是當?shù)簦瑂tatus為true的時候getServerStatus的結(jié)果都是true,反之則為false
但是在memcache進程正常運行的情況下,對set,add,replace,get等函數(shù)都沒有影響。
2.5.Memcache::add
2.5.1.說明
bool?Memcache::add?(?string?$key?,?mixed?$var?[,?int?$flag?[,?int?$expire?]]?)?
添加一個要緩存的數(shù)據(jù)如果作為這個緩存的數(shù)據(jù)的鍵在服務(wù)器上還不存在的情況下,
2.5.2.參數(shù)
key??????????????? 緩存數(shù)據(jù)的鍵 其長度不能超過250個字符
var??????????????? 值,整型將直接存儲,其他類型將被序列化存儲 ,其值最大為1M
flag?????????????? 是否使用 zlib 壓縮 ,當flag=MEMCACHE_COMPRESSED的時侯,數(shù)據(jù)很小的時候不會采用zlib壓縮,只有數(shù)據(jù)達到一定大小才對數(shù)據(jù)進行zlib壓縮。(沒有具體的測試數(shù)據(jù)進行壓縮的最小值是多少)
expire???????????? 過期時間,0 為永不過期,可使用 unix 時間戳格式或距離當前時間的秒數(shù),設(shè)為秒數(shù)時不能大于 2592000(30 天)
2.5.3.返回值
成功返回 TRUE,失敗返回 FALSE,如果這個鍵已經(jīng)存在,其他方面memcache:;add()的行為與memcache::set相似
2.5.4.范例


/*?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::replace
2.6.1.說明
bool?Memcache::replace?(?string?$key?,?mixed?$var?[,?int?$flag?[,?int?$expire?]]?)替換一個指定 已存在key 的的緩存變量內(nèi)容
2.6.2.參數(shù)
key??????????????? 緩存數(shù)據(jù)的鍵, 其長度不能超過250個字符
var??????????????? 值,整型將直接存儲,其他類型將被序列化存儲,其值最大為1M
flag?????????????? 是否使用 zlib 壓縮 ,當flag=MEMCACHE_COMPRESSED的時侯,數(shù)據(jù)很小的時候不會采用zlib壓縮,只有數(shù)據(jù)達到一定大小才對數(shù)據(jù)進行zlib壓縮。(沒有具體的測試數(shù)據(jù)進行壓縮的最小值是多少)
expire???????????? 過期時間,0 為永不過期,可使用 unix 時間戳格式或距離當前時間的秒數(shù),設(shè)為秒數(shù)時不能大于 2592000(30 天)
2.6.3.返回值
成功返回 TRUE,失敗返回 FALSE。
2.6.4.范例


/*?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::set
2.7.1.說明
bool?Memcache::set?(?string?$key?,?mixed?$var?[,?int?$flag?[,?int?$expire?]]?)
設(shè)置一個指定 key 的緩存變量內(nèi)容
2.7.2.參數(shù)
key??????????????? 緩存數(shù)據(jù)的鍵, 其長度不能超過250個字符
var??????????????? 值,整型將直接存儲,其他類型將被序列化存儲,其值最大為1M
flag?????????????? 是否使用 zlib 壓縮 ,當flag=MEMCACHE_COMPRESSED的時侯,數(shù)據(jù)很小的時候不會采用zlib壓縮,只有數(shù)據(jù)達到一定大小才對數(shù)據(jù)進行zlib壓縮。(沒有具體的測試數(shù)據(jù)進行壓縮的最小值是多少)
expire???????????? 過期時間,0 為永不過期,可使用 unix 時間戳格式或距離當前時間的秒數(shù),設(shè)為秒數(shù)時不能大于 2592000(30 天)
2.7.3.返回值
成功返回 TRUE,失敗返回 FALSE。
2.7.4.范例


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




$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::get
2.8.1.說明
string Memcache::get ( string $key [, int &$flags ] )
array Memcache::get ( array $keys [, array &$flags ] )
獲取某個 key 的變量緩存值
2.8.2.參數(shù)
key??????????????? 緩存值的鍵
flags????????????? 如果是傳址某個變量,獲取緩存值被set或是add的flag結(jié)果將被存于該變量
2.8.3.返回值
返回緩存的指定 key 的變量內(nèi)容或者是在失敗或該變量的值不存在時返回 FALSE
?如果傳出的key的數(shù)組中的key都不存在,返回的結(jié)果是一個空數(shù)組,反之則返回key與緩存值相關(guān)聯(lián)的關(guān)聯(lián)數(shù)組
2.8.4.范例


$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‘,?‘a(chǎn)nother_key‘));
//如果some_key,another_key不存在?$var?=?array();
//如果some_key,another_key存在?????$var?=?array(‘some_key‘=>‘緩存值‘,?‘a(chǎn)nother_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::delete
2.9.1.說明
bool?Memcache::delete?(?string?$key?[,?int?$timeout?]?)刪除某一個變量的緩存
2.9.2.參數(shù)
key ? ? ? ?? 緩存的鍵 鍵值不能為null和‘’,當它等于前面兩個值的時候php會有警告錯誤。
timeout?? 刪除這項的時間,如果它等于0,這項將被立刻刪除反之如果它等于30秒,那么這項被刪除在30秒內(nèi)?
2.9.3.返回值
成功返回 TRUE,失敗返回 FALSE。
2.9.4.范例


$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::flush
2.10.1.說明
bool?Memcache::flush?(?void?)清空所有緩存內(nèi)容,不是真的刪除緩存的內(nèi)容,只是使所有變量的緩存過期,使內(nèi)存中的內(nèi)容被重寫
2.10.2.返回值
成功返回 TRUE,失敗返回 FALSE。
2.10.3.范例


$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::getExtendedStats
2.11.1.說明
array?Memcache::getExtendedStats?([?string?$type?[,?int?$slabid?[,?int?$limit?]]]?)獲取所有服務(wù)器擴展靜態(tài)信息?
2.11.2.參數(shù)
type?????? 靜態(tài)信息類型,有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes},依照一定規(guī)則協(xié)議這個可選參數(shù)是為了方便開發(fā)人員查看不同類別的信息而輸入的標題
slabid?? 用于按指定類型聯(lián)合設(shè)置 cache 堆為有效的片到堆中。緩存堆被被命令綁定到服務(wù)器上并被嚴格的用于調(diào)試用途
limit ? ?? 用于按指定類型聯(lián)合設(shè)置 cache 堆為輸入的數(shù)字所限制的大小到堆,默認值為 100?
2.11.3.返回值
返回一個由服務(wù)器擴展靜態(tài)信息二維數(shù)組,失敗時返回 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);
?>
<br />輸出結(jié)果


[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::getStats
2.12.1.說明
array?Memcache::getStats?([?string?$type?[,?int?$slabid?[,?int?$limit?]]]?)獲取最后添加服務(wù)器靜態(tài)信息?
2.12.2.參數(shù)
type ? ? ? 靜態(tài)信息類型,有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes},依照一定規(guī)則協(xié)議這個可選參數(shù)是為了方便開發(fā)人員查看不同類別的信息而輸入的標題
slabid?? 用于按指定類型聯(lián)合設(shè)置 cache 堆為有效的片到堆中。緩存堆被被命令綁定到服務(wù)器上并被嚴格的用于調(diào)試用途
limit????? 用于按指定類型聯(lián)合設(shè)置 cache 堆為輸入的數(shù)字所限制的大小到堆,默認值為 100?
2.12.3.返回值
返回一個服務(wù)器靜態(tài)信息數(shù)組,失敗時返回 FALSE?
2.13.Memcache::getServerStatus
2.13.1.說明
int?Memcache::getServerStatus?(?string?$host?[,?int?$port?]?)通過輸入的 host 及 port 來獲取相應(yīng)的服務(wù)器信息
2.13.2.參數(shù)
host 服務(wù)器域名或 IP
port 端口號,默認為 11211
2.13.3.返回值
返回服務(wù)器狀態(tài),0 為失敗,其他情況返回非 0 數(shù)字?
2.13.4.范例


$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::getVersion
2.14.1.說明
string?Memcache::getVersion?(?void?)獲取服務(wù)器的版本號信息?
2.14.2.返回值
成功返回服務(wù)器的版本號字符串,失敗返回 FALSE?
2.14.3.范例


$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?]?)設(shè)置壓縮極限
2.15.2.參數(shù)
threshold 設(shè)置控制自動壓縮的變量長度的最小值
min_saving 指定的最低壓縮比率,值必須介于 0 - 1 之間,默認為 0.2 代表 20% 的壓縮比率?
2.15.3.返回值
成功返回 TRUE,失敗返回 FALSE。?
2.15.4.范例


$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::setServerParams
2.16.1.說明
bool?Memcache::setServerParams?(?string?$host?[,?int?$port?[,?int?$timeout?[,?int?$retry_interval?[,?bool?$status?[,?callback?$failure_callback?]]]]]?)Memcache version 2.1.0 后增加的函數(shù),運行時設(shè)置服務(wù)器參數(shù)
2.16.2.參數(shù)
host?????????? 服務(wù)器域名或 IP
port 端口號,默認為 11211
timeout???? 超時連接失效的秒數(shù),修改默認值 1 時要三思,有可能失去所有緩存方面的優(yōu)勢導致連接變得很慢
retry_interval???? 服務(wù)器連接失敗時的重試頻率,默認是 15 秒一次,如果設(shè)置為 -1 將禁止自動重試,當擴展中加載了 dynamically via dl() 時,無論本參數(shù)還是常連接設(shè)置參數(shù)都會失效。 每一個失敗的服務(wù)器在失效前都有獨自的生存期,選擇后端請求時會被跳過而不服務(wù)于請求。一個過期的連接將成功的重新連接或者被標記為失敗的連接等待下一次 重試。這種效果就是說每一個 web server 的子進程在服務(wù)于頁面時的重試連接都跟他們自己的重試頻率有關(guān)。
status ?? 控制服務(wù)器是否被標記為 online,設(shè)置這個參數(shù)為 FALSE 并設(shè)置 retry_interval 為 -1 可以使連接失敗的服務(wù)器被放到一個描述不響應(yīng)請求的服務(wù)器池子中,對這個服務(wù)器的請求將失敗,接受設(shè)置為失敗服務(wù)器的設(shè)置,默認參數(shù)為 TRUE,代表該服務(wù)器可以被定義為 online。
failure_callback ?? 失敗時的回調(diào)函數(shù),函數(shù)的兩個參數(shù)為失敗服務(wù)器的 hostname 和 port?
2.16.3.返回值
成功返回 TRUE,失敗返回 FALSE。?
2.16.4.范例


{
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::increment
2.17.1.說明
int?Memcache::increment?(?string?$key?[,?int?$value?]?)給指定 key 的緩存變量一個增值,如果該變量不是數(shù)字時不會被轉(zhuǎn)化為數(shù)字,這個增值將會加到該變量原有的數(shù)字之上,變量不存在不會新增變量,對于壓縮存儲的變量不要使用本函數(shù)因為相應(yīng)的取值方法會失敗。?
2.17.2.參數(shù)
key 緩存值的鍵
var 值,整型將直接存儲,其他類型將被序列化存儲?
2.17.3.返回值
成功返回新的變量值,失敗返回 FALSE。
2.17.4.范例


$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::decrement
2.18.2.說明
int?Memcache::decrement?(?string?$key?[,?int?$value?]?)給指定 key 的緩存變量一個遞減值,與 increment 操作類似,將在原有變量基礎(chǔ)上減去這個值,該項的值將會在轉(zhuǎn)化為數(shù)字后減去,新項的值不會小于 0,對于壓縮存儲的變量不要使用本函數(shù)因為相應(yīng)的取值方法會失敗。?
2.18.2.參數(shù)
key 緩存值的鍵
var 值,整型將直接存儲,其他類型將被序列化存儲?
2.18.3.返回值
成功返回新的變量值,失敗返回 FALSE。?
2.18.4.范例


$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_debug
2.19.1.說明
bool?memcache_debug?(?bool?$on_off?)設(shè)置 memcache 的調(diào)試器是否開啟,值為 TRUE 或 FALSE。 受影響于 php 安裝時是否使用了 --enable-debug 選項,如果使用了該函數(shù)才會返回 TRUE,其他情況將始終返回 FALSE。?
2.19.2.參數(shù)
on_off 設(shè)置調(diào)試模式是否開啟,TRUE 為開啟,F(xiàn)ALSE 為關(guān)閉
2.19.3.返回值
php 安裝時如果使使用了 --enable-debug 選項返回 TRUE,否則將返回 FALSE。
轉(zhuǎn)于:http://www.cnblogs.com/whoamme/p/3437146.html

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans le développement Web, nous devons souvent utiliser une technologie de mise en cache pour améliorer les performances du site Web et la vitesse de réponse. Memcache est une technologie de mise en cache populaire qui peut mettre en cache n'importe quel type de données et prend en charge une simultanéité élevée et une haute disponibilité. Cet article explique comment utiliser Memcache dans le développement PHP et fournit des exemples de code spécifiques. 1. Installer Memcache Pour utiliser Memcache, nous devons d'abord installer l'extension Memcache sur le serveur. Dans le système d'exploitation CentOS, vous pouvez utiliser la commande suivante

Comment utiliser Memcache pour une écriture et des requêtes de données efficaces dans le développement PHP?? Avec le développement continu des applications Internet, les exigences en matière de performances du système sont de plus en plus élevées. Dans le développement PHP, afin d'améliorer les performances du système et la vitesse de réponse, nous utilisons souvent diverses technologies de mise en cache. L'une des technologies de mise en cache couramment utilisées est Memcache. Memcache est un système de mise en cache d'objets à mémoire distribuée hautes performances qui peut être utilisé pour mettre en cache les résultats des requêtes de base de données, les fragments de page, les données de session, etc. En stockant les données en mémoire

Dans le développement PHP, l'utilisation du système de mise en cache Memcache peut considérablement améliorer l'efficacité de la lecture et de l'écriture des données. Memcache est un système de mise en cache basé sur la mémoire qui peut mettre en cache les données en mémoire pour éviter les lectures et écritures fréquentes de la base de données. Cet article expliquera comment utiliser Memcache en PHP pour des opérations efficaces de lecture et d'écriture de données, et fournira des exemples de code spécifiques. 1. Installer et configurer Memcache Vous devez d'abord installer l'extension Memcache sur le serveur. peut passer

La pratique et la réflexion de la technologie de mise en cache Memcache pour optimiser l'interaction des données en PHP Dans les applications Web modernes, l'interaction des données est un problème très important. Elle n'est pas assez efficace et limitera l'évolutivité et les performances des applications Web. Afin d'accélérer l'interaction des données, notre approche habituelle consiste à optimiser la conception de la base de données, à améliorer les performances du matériel et à augmenter la capacité du serveur. Cependant, ces méthodes ont toutes une limite commune : elles augmentent le co?t du système. Ces dernières années, la technologie Memcache a progressé dans la résolution de ce problème.

Memcache est une technologie de mise en cache distribuée open source. Il améliore considérablement la vitesse d'accès aux données en stockant les données en mémoire, améliorant ainsi les performances et la réactivité du site Web. Dans les projets PHP, la technologie de mise en cache Memcache est également largement utilisée et a obtenu de bons résultats. Cet article explorera en profondeur l'application et la pratique de la technologie de mise en cache Memcache dans les projets PHP. 1. Principes et avantages de Memcache Memcache est une technologie de mise en cache mémoire qui permet de stocker des données

Avec le développement rapide d'Internet, de plus en plus d'applications doivent faire face à un grand nombre de requêtes simultanées. Comment améliorer les capacités de traitement simultané des applications est devenu un problème que les développeurs doivent résoudre. Parmi eux, l’utilisation de la technologie de mise en cache Memcache pour l’optimisation de la concurrence est devenue une solution relativement populaire. Memcache est une technologie de mise en cache efficace adaptée aux applications Web, bases de données et systèmes distribués à grande échelle. Sa caractéristique est de stocker des données en mémoire pour réaliser des opérations de lecture et d'écriture à grande vitesse. Pendant le processus d'accès aux données des applications Web,

à mesure que les applications Web deviennent de plus en plus complexes, les performances sont devenues un problème crucial. Dans de nombreuses applications, les requêtes de base de données constituent l’une des opérations les plus chronophages. Afin d'éviter de lire fréquemment les données de la base de données, vous pouvez utiliser un système de mise en cache pour stocker les données fréquemment lues en mémoire pour un accès rapide. Dans le développement PHP, l'utilisation de Memcached pour la mise en cache distribuée est une pratique extrêmement courante. Dans cet article, nous présenterons comment utiliser Memcached pour la mise en cache distribuée. Qu'est-ce que Memca

Comment utiliser Memcache pour optimiser les opérations de stockage de données dans votre application PHP ? Dans le développement d’applications Web, le stockage des données constitue un maillon crucial. Dans les applications PHP, Memcache, en tant que système de cache mémoire, peut améliorer efficacement l'efficacité des opérations de stockage et de lecture des données. Cet article expliquera comment utiliser Memcache pour optimiser les opérations de stockage de données dans les applications PHP et joindra des exemples de code spécifiques. étape 1 : Installez l'extension Memcache Tout d'abord, vous devez installer Me dans votre environnement PHP
