1.簡介
memcache模組是一個高效的守護進程,提供用於內存緩存的過程序程序和麵向對象的方便的接口,特別是對於設計動態web程序時減少對數據庫的訪問。
memcache也提供用於通訊對話(session_handler)的處理。
更多Memcache 模組相關資訊可以到 http://www.danga.com/memcached/ 查閱。
1.1.memcache在php.ini中的設定項清單
名稱 | memcache.allow_failover | 「1」 | PHP_INI_ALL |
Available since memcache 2.1.0. | memcache. chunk_size | ||
PHP_INI_ALL | Available since memcache 2.0.2. | memcache.default_PH% vailable since memcache 2.0.2. | |
memcache.hash_strategy | "standard" | PHP_INI_ALL | Available since memcache 2.2.0. |
memcache.hash_functionINPHnemPH | mcache 2.2.0. | session.save_handler | |
PHP_INI_ALL | Supported since memcache 2.1.2 | session.save_path | _|
有關PHP_INI_* 常數進一步的細節與定義參見PHP手冊php.ini 設定選項。 | 1.2.以下是配置項目的簡要解釋 | memcache.allow_failover | |
在錯誤時是否透明的故障轉移到其他伺服器上處理(註:故障轉移是動詞)。 | memcache.max_failover_attempts | integer | |
memcache.chunk_size |
資料將會被分成指定大小(chunk_size)的塊來傳輸,這個值(chunk_size)就會被分成指定大小(chunk_size)的塊來傳輸,這個值(chunk_size)就越小的無法解釋的減速,請試著將這個值增加到32768.
memcache.default_portstring當連接memcache伺服器的時候,如果沒有指定連接埠這個預設的tcp連接埠將被使用。
memcache.hash_strategystring控制在映射 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常數列表名稱
類型 ::set(), Memcache::add () 和Memcache::replace() 幾個函數時的壓縮比率。MEMCACHE_HAVE_SESSION
integer如果通訊對話的處理(session handler)被允許使用其值為 1,其他情況值為 0。2Memcache Functions 函數清單 2.1.Memcache::connect bool Meconache::bool Meconache::bool Meconache $host [, int $port [, int $timeout2.1.1.說明
$port(int) 伺服器tcp連接埠號,預設值是11211
$timeout 連接memcache進程的失效時間,在修改它的預設值1的時候要三思,以免失去所有memcache快取的優勢導致連接變得很慢。
2.1.3.回傳值
如果成功則回傳true,失敗則回傳false
2.1.4.範例
* procedural API
*/
=
memcache_connect('memcache_host',
/* OO API */$memcache = new Memcache;$memcache-> 211
);?> 2.2.Memcache::pconnect2.2.1.說明
$host [, int $port [
, int
$timeout .2.2.參數
$timeout 連接memcache進程的失效時間,在修改它的預設值1的時候要三思,以免失去所有memcache快取的優勢導致連線變得很慢。
2.2.3.回傳值
2.2.4.範例? edural API */$memcache_obj = memcache_pconnect('meache_host'1, /* OO API */$ memcache_obj
Memcache;
$meache_objache
11211
);
2.3.Memcache::close2.3.1.說明bool Memcache 關閉物件(對常連線不作用)2.3.2.回傳值如果成功則回傳true,失敗則回傳false2.3.3.範例
php
/* 程序API */$memcache_objache🜎 , 11211); /* 在這裡做些什麼 .. */
memcache_close($ */ $memcache_obj
=
新 Memcache;$memcache_obj->connect('memcache_host' ); /* 在這裡做些事情..
*/$memcache_obj->close();?> 2.4.1.說明
bool Memcache::addServer (string
[ ,
$持久 [
[
int $ [, 布爾$狀態 [, callback $failure_callback伺服器 的動作,所以memcache進程進程啟動的的,增加了(新增true)2.4.2。weight 權重,在多個伺服器設定中存在可能失去所有儲存方面的優勢導致連線連線很慢retry_interval 伺服器連線失敗時的重試頻率,預設為15秒一次,如果設定為-1將禁止自動重試,當透過dl()動態擴充中載入了時,本參數或常連接設定參數都會失效。重新連線或被標記為失敗的連線等待下一次重連試。 status 控制伺服器是否被標記為在線,並設定這個參數為FALSE 並設定retry_interval 為-1 可以使連線失敗的伺服器被放到一個描述不回應的伺服器池中,對這個伺服器的請求將失敗,設定為失敗伺服器的設置,預設參數為TRUE,代表該伺服器可以定義為在線。 failure_callback 失敗時的回呼函數,函數的兩個參數為失敗伺服器的主機名稱和連接埠2.4.3.傳回值成功回傳 TRUE,失敗回傳 FALSE。 註:測試中addServer函數的時候我們測試主要了其參數retry_interval和status2.4.4.範例2.4.4.1.retry_interval參數的測試 php
$mem = =
$mem->addServer ('localhost', 11211, true , 15, true); // retrt_interval=15$is_set =$1 , '中華人民共和國');?>上面的例子中如果localhost伺服器down掉或是memcache守護進程當掉,執行請求的時候連接伺服器失敗時算起15秒後會自動重試秒後會自動重試連接伺服器,但在這15秒內不會去連接這台伺服器,就是只要有請求,沒15秒就會嘗試連接伺服器,但是每個伺服器連線重試是獨立的。比如說我一次加了兩 個伺服器一個是localhost,一個是172.16.100.60,它們分別是從各自連線失敗那個時間算起,只要對各自伺服器有請求就會每隔15秒去 連接各自的伺服器的。 2.4.4.2.retry_interval與status結合使用的情況php$mem ;$is_add
=
12111,
12111 1, 1
, -1, false); $is_set = $mem->set('key1', '中華人民共和國');?>_?>情況下,將連線失敗的伺服器放到一個不回應請求的一個池子中,因此對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 (p , mixed $var [,
int $flag
[
添加一個要緩存的資料如果作為這個快取的資料的鍵在伺服器上還不存在的情況下,
2.5.2.參數
key 值,整型將直接存儲,其他類型將被序列化存儲,其值最大為1M
flag 是否使用 zlib 壓縮 ,當flag=MEMCACHE_COMPRESSED的時侯,數據很小的時候不會採用zlib壓縮,只有數據達到一定大小才對數據進行zlib壓縮。 (沒有特定的測試資料進行壓縮的最小值是多少)
expire 過期時間,0 為永不過期,可使用unix 時間戳格式或距離目前時間的秒數,設為秒數時不能大於2592000(330天)
2.5.3.回傳值
成功回傳TRUE,失敗回傳FALSE,如果這個鍵已經存在,其他面向memcache:;add()的行為與memcache::set相似
2.5.4.範例
php$memcache_obj = ", 11211);/ **/ procedural API */memcache_add($memcache_obj,) FALSE, 30 );/* OO API */$memcache_objvar->$memcache_objvar->. ', FALSE , 30);?> bool Memcache: :replace ( string
$key
,
int
[, int $expire ]] )替換一個指定已存在key 的快取變數 快取資料的鍵, 其長度不能超過250個字符var 值,且整數將直接存儲,其他類型將序列化存儲,其值最大為1Mflag ,資料很小的時候不會採用zlib壓縮,只有資料達到一定大小才對資料進行zlib壓縮。 (沒有特定的測試資料進行壓縮的最小值是多少)expire 過期時間,0 為永不過期,可使用unix 時間戳格式或距離目前時間的秒數,設為秒數時不能大於2592000(330天)2.6.3.回傳值成功回傳TRUE,失敗回傳FALSE。 2.6.4.範例
php
$memcache_obj = memcache_connect('memcache_host' ); /* 程式API */
memcache_replace($memcache_obj,
"test_ 「, 假, 30);/* OO API */$memcache_objjped ", “ 一些變數
」, FALSE, 30);); > 2.7.Memcache:2.7.1.說明 string $key
,
混合
int $expire
]] ) 設定指定的變數儲存金鑰內容 2.7.2.參數key 值,整將直接存儲,其他類型將被序列化存儲,其值最大為1Mflag 是否使用zlib 壓縮,當fla克= MEMCACHE_COMPRESSED的時侯,資料粒徑的時候不會採用zlib壓縮,只有資料達到一定大小才壓縮資料。 (沒有特定的測試資料進行壓縮的簡單是多少)expire 過渡時間,以永不逾越,可使用unix計時器格式或距離目前時間的秒數,設定數時不能大於25920002592000(30天)天2.7.3.回傳值成功回傳TRUE,失敗回傳FALSE。 2.7.4. 範例php* 連接到 memcached 伺服器*/ $memcache_obj =
memcache_connect('memcache_host'1.
設定項目的值帶有鍵“var_key”,使用0 作為標誌值,壓縮未使用過期時間為30 秒*/memcache_set($memcache_obj, 'var_key',
'var_key'
,
30);echo memcache_get($memcache_obj?,,$ php/* OO API */$ Memcache;/* 連接到 memcached 伺服器 */$memcache_obj->connect('memcache_host', “var_key”的項目的值,使用即時壓縮的過期時間為50 秒*/$memcache_obj->set('var_key',MCA ED , 50);echo $memcache_obj->?
php
/* 程序API */$memcache_objache🜎 , 11211); $var =
memcache_get($memcache_obj,* $memcache_obj =
新 Memcache;$memcache_obj->connect('memcache_host',connect('memcache_host' $var
= $ memcache_obj->get('some_key');/*
您也可以使用鍵數組作為參數。 如果在伺服器上沒有找到這樣的項目,則結果數組根本不會包含這樣的鍵。 *//* 程式API */$memcache_obj
11211
);
$var = memcache_get($memcache_obj, Array //如果some_key,another_key不有$var = array();//若some_key,another_key存在 $var = array('some_key'=>'伺服器值', 'another_key'=>'伺服器值');/T API
*/$memcache_obj = 新_b memcache_host ', 11211) ;
$var =
$memcache_obj-> 'second_key'));?>
2.9.Memcache::刪除2.9.1.說明2.9.Memcache::刪除2.9.1.說明 $key
[ , int $timeout ] )鍵個值的時候php會有警告錯誤。 timeout 刪除這個的時間,如果它等於0,這個就會被立即刪除反之如果它相當於30秒,那麼這個就在30秒內被刪除了2.9.3.回傳值成功回傳TRUE ,失敗返回FALSE。
2.9.4.例
php
/* procedural API */ , 11211); /* after 10 seconds item will be deleted by the server
*/memcache_delete(),_delete( _delete',
10); /* OO API */$memcache_obj
= ->connect('memcache_host', 11211);$memcache_obj->
delete('key_to_delete',delete('key_to_delete' ?>
2.10.Memcache::flush2.10.1.說明bool Memcache::flush
真的刪除快取的內容,只是使所有變數的快取過期,使記憶體中的內容被重寫2.10.2.回傳值
2.10.3.範例
* j = memcache_connect('memcache_host' ,
memcache_flush(
$memcache_obj
);
🜎); $memcache_obj
=
new Memcache;$memcache_obj->connect('memcache_host', _obj->flush(); ?>
2.11.Memcache::getExtendedStats ::getExtendedStats ([ string $type
[, int $slabid [,
取得所有伺服器擴充靜態資訊 2.11.2.參數type 靜態信息類型,有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes},依照一定規則協議這個可選參數是為了方便開發人員查看不同類別的信息而輸入的標題slabid 用於按指定類型聯合設定cache 堆為有效的片到堆中。快取堆被命令綁定到伺服器上並被嚴格的用於調試用途limit 用於按指定類型聯合設定cache 堆為輸入的數字所限制的大小到堆,預設值為100
2.11.3 .回傳值回傳一個由伺服器擴充靜態資訊二維數組,失敗時回傳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);
?>
输出结果
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 ]]] )
获取最后添加服务器静态信息
2.12.2.参数
type 静态信息类型,有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes},依照一定规则协议这个可选参数是为了方便开发人员查看不同类别的信息而输入的标题
slabid 用于按指定类型联合设置 cache 堆为有效的片到堆中。缓存堆被被命令绑定到服务器上并被严格的用于调试用途
limit 用于按指定类型联合设置 cache 堆为输入的数字所限制的大小到堆,默认值为 100
2.12.3.返回值
返回一个服务器静态信息数组,失败时返回 FALSE
2.13.Memcache::getServerStatus
2.13.1.說明
int Memcache::getServerStatus ( string int $port ] ) 透過輸入的host 及port 來取得對應的伺服器資訊2.13.2.參數
host 伺服器網域或IP*
$memcache
= new Memcache;$memcache->$memcache 1211);
echo $ memcache->getServerStatus('memcache_host',
11211 $memcache = memcache_connect( 'memcache_host', 11211);
echo meache ', 11211); ?>
2.14.Memcache::getVersion2.14.1.說明 getVersion ( void )取得伺服器的版本號碼資訊 2.14.2.回傳值成功回傳伺服器的版本號字串,失敗回傳FALSE 2.14.3.範例
? /*
OO API */
=
->
, 11211);
echo*
*/
$memcache
= memcache_connect('memcache_host'
,
11211); ;?> 2.15.Memcache::setCompressThreshold
bool Memcache::setCompressThreshold ( int float $min_savings ] )
設定壓縮極限2.15.2.參數threshold 設定控制自動壓縮的變數長度的最小值
min_saving 指定的最低壓縮比率,數值必須介於0 - 1 之間,預設為0.2 代表20 % 的壓縮比率 2.15.3.回傳值成功回傳TRUE,失敗回傳FALSE。
2.15.4.例
php
* = 新 Memcache ;$memcache_obj->addServer('memcache_host',
112111, 112111, 112111
設定壓縮閾值(20000 , 0.2);/* 程式API
*/$ ect('memcache _主機', 11211 ) ?> 2.16.Memcache: : setServerParams
2.16.1.說明bool Memcache::setServerParams ( , int $port
[ ,
$逾時 [
$retry_interval
[
回呼 $failure_callback ]]]]] )Memcache version 2.1.0 之後增加的函數,運行時設定伺服器參數2.16.2. port 連接埠號,預設為11211timeout 逾時連線失敗時的秒數,預設修改值1 時要三思,有可能失去所有伺服器方面的優點導致連線變得很慢retry_interval 伺服器連線失敗時的重試頻率,預設為15秒一次,如果設定為-1將禁止自動重試,當擴充功能中透過dl()動態載入了時,無論本參數還是常連線設定參數都會失效。每一個失敗的伺服器在失效前都有獨立的生存期,選擇主軸請求時會被跳過而不是服務於請求。一個過渡的連接將成功的重新連接或被標記為失敗的連接等待下一次重試。這個效果就是說每個Web伺服器的子程序在服務頁面時的重試連線都跟他們自己的重試頻率有關。 status 控制伺服器是否被標記為在線,設定此參數為FALSE 並設定retry_interval 為-1 可以使連接失敗的伺服器被轉發一個描述不響應請求的伺服器池子中,對這個伺服器的請求將失敗,接受設定為失敗伺服器的設置,預設參數為TRUE,代表該伺服器可以定義為在線。 failure_callback 失敗時的回呼函數,函數這兩個參數分別為失敗伺服器的主機名稱和連接埠2.16.3.回傳值成功TRUE,失敗回傳FALSE。 2.16.4.例 php ,
函數 _callback_memcache_failure($主機, 「記憶體快取」
$主機:$埠'失敗";}/*=$ 新
內存快取;// 以離線模式新增伺服器$memcache->addServer('meache_host'1, 假,
1, 1, -1 // 使伺服器恢復線上$ memcache ->setServerParams('memcache_host', 11211, , 真實, '_callback_memcache_failure' );/* 程式API
*/$memcache_obj 11211);memcache_set_server_params( $memcache_obj , 'memcache_host', 11211, , TRUE, '_callback_memcache_failure ');
? 增量(字串 $key [, int $value ] )$value ] )
$value增值將加到該戒指原有的數字之上,戒指不存在不會增加戒指,對於壓縮存儲的戒指不要使用本函數因為相應的取值方法會失敗。值的鍵var 值,整數將直接存儲,其他類型將被序列化 2.17.3.返回值成功返回新的標誌值,失敗返回FALSE。 php/* 程式API */h mcache_connect('memcache_host', 11211 );/*
將計數器增加2 */ '計數器'
2);
/* OO API */$memcache_objh ;$memcache_obj- >connect( 'memcache_host', 11211);
增加計數器=
$ memcache_obj
->
增量('計數器'
,
);
2.18.Memcache::decrement
2.18.2.說明
::$key [ , int $value ] ) ] )
給指定key 的快取變數上遞減值,與increment 運算類似,將該項上減在這個值轉換為數字後減去,新項的值不會小於0,而對於壓縮儲存的變數不要使用本函數因為對應的值方法會失敗。
2.18.2.參數
key 緩存值的鍵
var 值,整數將直接存儲,其他類型將被序列化存儲
2.18.3.返回值
成功返回新的變量值,失敗返回新的變量值返回FALSE。
2.18.4.範例
php
* j = memcache_connect('memcache_host' , 11211);/* decrement item by = memcache_decrement(
$memcache_obj, ' test_item', 2);/* OO API new Memcache;$memcache_obj
->connect('memcache_host', 11211 $new_value =
$memcache_obj->decrement('test_item', 3);
3); 2.19.memcache_debug2.19.1 .說明bool memcache_debug ( bool $on_off ) )
)
2.19.2.參數on_off 設定調試模式是否開啟,TRUE 為開啟,FALSE 為關閉
以上就介紹了PHP的memcache小結,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP在現代化進程中仍然重要,因為它支持大量網站和應用,並通過框架適應開發需求。 1.PHP7提升了性能並引入了新功能。 2.現代框架如Laravel、Symfony和CodeIgniter簡化開發,提高代碼質量。 3.性能優化和最佳實踐進一步提升應用效率。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

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

PHP中使用clone關鍵字創建對象副本,並通過\_\_clone魔法方法定制克隆行為。 1.使用clone關鍵字進行淺拷貝,克隆對象的屬性但不克隆對象屬性內的對象。 2.通過\_\_clone方法可以深拷貝嵌套對象,避免淺拷貝問題。 3.注意避免克隆中的循環引用和性能問題,優化克隆操作以提高效率。

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

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

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中