1.簡介 memcache模塊是一個高效的守護進程,提供用于內(nèi)存緩存的過程式程序和面向?qū)ο蟮姆奖愕慕涌冢貏e是對于設(shè)計動態(tài)web程序時減少對數(shù)據(jù)庫的訪問。 memcache也提供用于通信對話(session_handler)的處理。 更多Memcache 模塊相關(guān)信息可以到 http://www.danga.com/memcached/ 查閱。 1.1.memcache在php.ini中的配置項列表 memcache在php.ini中的配置項列表 名稱 默認(rèn)值 是否可變 改變?nèi)罩? 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_* 常量進一步的細(xì)節(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ù)將會被分成指定大小(chunk_size)的塊來傳輸,這個值(chunk_size)越小,寫操作的請求就越多,如果發(fā)現(xiàn)其他的無法解釋的減速,請試著將這個值增大到32768. memcache.default_port string 當(dāng)連接memcache服務(wù)器的時候,如果沒有指定端口這個默認(rèn)的tcp端口將被用。 memcache.hash_strategy string 控制在映射 key 到服務(wù)器時使用哪種策略。設(shè)置這個值一致能使hash 算法始終如一的使用于服務(wù)器接受添加或者刪除池中變量時將不會被重新映射。設(shè)置這個值以標(biāo)準(zhǔn)的結(jié)果在舊的策略被使用時。 memcache.hash_function string 控制哪種 hsah 函數(shù)被應(yīng)用于 key映射 到服務(wù)器過程中,默認(rèn)值“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;retry_interval=15”。 1.3.memcache常量列表 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端口號,默認(rèn)值是11211 $timeout 連接memcache進程的失效時間,在修改它的默認(rèn)值1的時候要三思,以免失去所有memcache緩存的優(yōu)勢導(dǎo)致連接變得很慢。 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::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端口號,默認(rèn)值是11211 $timeout 連接memcache進程的失效時間,在修改它的默認(rèn)值1的時候要三思,以免失去所有memcache緩存的優(yōu)勢導(dǎo)致連接變得很慢。 2.2.3.返回值 如果成功則返回true,失敗則返回false 2.2.4.范例 <?php /* procedural API */ $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.范例 <?php /* 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::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 端口號,默認(rèn)為 11211 persistent 是否使用常連接,默認(rèn)為 TRUE weight 權(quán)重,在多個服務(wù)器設(shè)置中占的比重 timeout 連接服務(wù)器失效的秒數(shù),修改默認(rèn)值 1 時要三思,有可能失去所有緩存方面的優(yōu)勢導(dǎo)致連接變得很慢 retry_interval 服務(wù)器連接失敗時的重試頻率,默認(rèn)是 15 秒一次,如果設(shè)置為 -1 將禁止自動重試,當(dāng)擴展中加載了 dynamically via dl() 時,無論本參數(shù)還是常連接設(shè)置參數(shù)都會失效。 每一個失敗的服務(wù)器在失效前都有獨自的生存期,選擇后端請求時會被跳過而不服務(wù)于請求。一個過期的連接將成功的重新連接或者被標(biāo)記為失敗的連接等待下一次 重試。這種效果就是說每一個 web server 的子進程在服務(wù)于頁面時的重試連接都跟他們自己的重試頻率有關(guān)。 status 控制服務(wù)器是否被標(biāo)記為 online,設(shè)置這個參數(shù)為 FALSE 并設(shè)置 retry_interval 為 -1 可以使連接失敗的服務(wù)器被放到一個描述不響應(yīng)請求的服務(wù)器池子中,對這個服務(wù)器的請求將失敗,接受設(shè)置為失敗服務(wù)器的設(shè)置,默認(rèn)參數(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ù)的測試 <?php $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守護進程當(dāng)?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é)合使用的情況 <?php $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進程的正常運行還是當(dāng)?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 壓縮 ,當(dāng)flag=MEMCACHE_COMPRESSED的時侯,數(shù)據(jù)很小的時候不會采用zlib壓縮,只有數(shù)據(jù)達到一定大小才對數(shù)據(jù)進行zlib壓縮。(沒有具體的測試數(shù)據(jù)進行壓縮的最小值是多少) expire 過期時間,0 為永不過期,可使用 unix 時間戳格式或距離當(dāng)前時間的秒數(shù),設(shè)為秒數(shù)時不能大于 2592000(30 天) 2.5.3.返回值 成功返回 TRUE,失敗返回 FALSE,如果這個鍵已經(jīng)存在,其他方面memcache:;add()的行為與memcache::set相似 2.5.4.范例 <?php $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::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 壓縮 ,當(dāng)flag=MEMCACHE_COMPRESSED的時侯,數(shù)據(jù)很小的時候不會采用zlib壓縮,只有數(shù)據(jù)達到一定大小才對數(shù)據(jù)進行zlib壓縮。(沒有具體的測試數(shù)據(jù)進行壓縮的最小值是多少) expire 過期時間,0 為永不過期,可使用 unix 時間戳格式或距離當(dāng)前時間的秒數(shù),設(shè)為秒數(shù)時不能大于 2592000(30 天) 2.6.3.返回值 成功返回 TRUE,失敗返回 FALSE。 2.6.4.范例 <?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); ?> 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 壓縮 ,當(dāng)flag=MEMCACHE_COMPRESSED的時侯,數(shù)據(jù)很小的時候不會采用zlib壓縮,只有數(shù)據(jù)達到一定大小才對數(shù)據(jù)進行zlib壓縮。(沒有具體的測試數(shù)據(jù)進行壓縮的最小值是多少) expire 過期時間,0 為永不過期,可使用 unix 時間戳格式或距離當(dāng)前時間的秒數(shù),設(shè)為秒數(shù)時不能大于 2592000(30 天) 2.7.3.返回值 成功返回 TRUE,失敗返回 FALSE。 2.7.4.范例 <?php /* 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‘); ?> <?php /* 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::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.范例 <?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‘); /* 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和‘’,當(dāng)它等于前面兩個值的時候php會有警告錯誤。 timeout 刪除這項的時間,如果它等于0,這項將被立刻刪除反之如果它等于30秒,那么這項被刪除在30秒內(nèi) 2.9.3.返回值 成功返回 TRUE,失敗返回 FALSE。 2.9.4.范例 <?php /* 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::flush 2.10.1.說明 bool Memcache::flush ( void ) 清空所有緩存內(nèi)容,不是真的刪除緩存的內(nèi)容,只是使所有變量的緩存過期,使內(nèi)存中的內(nèi)容被重寫 2.10.2.返回值 成功返回 TRUE,失敗返回 FALSE。 2.10.3.范例 <?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(); ?> 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ā)人員查看不同類別的信息而輸入的標(biāo)題 slabid 用于按指定類型聯(lián)合設(shè)置 cache 堆為有效的片到堆中。緩存堆被被命令綁定到服務(wù)器上并被嚴(yán)格的用于調(diào)試用途 limit 用于按指定類型聯(lián)合設(shè)置 cache 堆為輸入的數(shù)字所限制的大小到堆,默認(rèn)值為 100 2.11.3.返回值 返回一個由服務(wù)器擴展靜態(tài)信息二維數(shù)組,失敗時返回 FALSE 2.11.4.范例 <?php $memcache_obj = new Memcache; $memcache_obj->addServer(‘memcache_host‘, 11211); $memcache_obj->addServer(‘failed_host‘, 11211); $stats = $memcache_obj->getExtendedStats(); print_r($stats); ?> 輸出結(jié)果 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::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ā)人員查看不同類別的信息而輸入的標(biāo)題 slabid 用于按指定類型聯(lián)合設(shè)置 cache 堆為有效的片到堆中。緩存堆被被命令綁定到服務(wù)器上并被嚴(yán)格的用于調(diào)試用途 limit 用于按指定類型聯(lián)合設(shè)置 cache 堆為輸入的數(shù)字所限制的大小到堆,默認(rèn)值為 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 端口號,默認(rèn)為 11211 2.13.3.返回值 返回服務(wù)器狀態(tài),0 為失敗,其他情況返回非 0 數(shù)字 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::getVersion 2.14.1.說明 string Memcache::getVersion ( void ) 獲取服務(wù)器的版本號信息 2.14.2.返回值 成功返回服務(wù)器的版本號字符串,失敗返回 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 ] ) 設(shè)置壓縮極限 2.15.2.參數(shù) threshold 設(shè)置控制自動壓縮的變量長度的最小值 min_saving 指定的最低壓縮比率,值必須介于 0 - 1 之間,默認(rèn)為 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::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 端口號,默認(rèn)為 11211 timeout 超時連接失效的秒數(shù),修改默認(rèn)值 1 時要三思,有可能失去所有緩存方面的優(yōu)勢導(dǎo)致連接變得很慢 retry_interval 服務(wù)器連接失敗時的重試頻率,默認(rèn)是 15 秒一次,如果設(shè)置為 -1 將禁止自動重試,當(dāng)擴展中加載了 dynamically via dl() 時,無論本參數(shù)還是常連接設(shè)置參數(shù)都會失效。 每一個失敗的服務(wù)器在失效前都有獨自的生存期,選擇后端請求時會被跳過而不服務(wù)于請求。一個過期的連接將成功的重新連接或者被標(biāo)記為失敗的連接等待下一次 重試。這種效果就是說每一個 web server 的子進程在服務(wù)于頁面時的重試連接都跟他們自己的重試頻率有關(guān)。 status 控制服務(wù)器是否被標(biāo)記為 online,設(shè)置這個參數(shù)為 FALSE 并設(shè)置 retry_interval 為 -1 可以使連接失敗的服務(wù)器被放到一個描述不響應(yīng)請求的服務(wù)器池子中,對這個服務(wù)器的請求將失敗,接受設(shè)置為失敗服務(wù)器的設(shè)置,默認(rèn)參數(shù)為 TRUE,代表該服務(wù)器可以被定義為 online。 failure_callback 失敗時的回調(diào)函數(shù),函數(shù)的兩個參數(shù)為失敗服務(wù)器的 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::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.范例 <?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::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.范例 <?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_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。 ending
轉(zhuǎn)自: http://www.cnblogs.com/qiantuwuliang/archive/2011/03/07/1974499.html
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
