PHP - Memcache 函式



Memcache 模組可以為 Memcached 提供方便的過程式和麵向物件的介面,Memcached 是一個高效的快取守護程序,專門設計用於減少動態 Web 應用程式中的資料庫負載。

Memcache 模組還可以提供一個會話處理程式 (Memcache)。

有關 Memcached 的更多資訊,請訪問 » http://www.danga.com/memcached/

安裝

此 PECL 擴充套件未包含在 PHP 中。新的版本、下載、原始檔、開發者資訊和 CHANGELOG 等附加資訊,可以在這裡找到:»https://pecl.php.net/package/memcache

要使用這些函式,我們必須使用 --enable-memcache [= DIR] 選項編譯具有 memcache 支援的 PHP。我們可以選擇透過指定 --disable-memcache-session 來停用 memcache 會話處理程式支援。

Windows 使用者可以在 php.ini 中啟用 php_memcache.dll 來使用這些函式。我們需要從 »PHP 下載或 » https://php.net.tw/manual/en/install.pecl.windows.php 下載此 PECL 擴充套件的 DLL。

需求

Memcache 模組可以使用 » zlib 的函式來支援動態資料壓縮。安裝此模組需要安裝 Zlib。

資源型別

emcache 模組只使用一種資源型別 - 它是快取伺服器連線的連結識別符號。

使用 Memcache 擴充套件需要 PHP 4.3.3 或更高版本。

執行時配置

這些函式的行為可能取決於 php.ini 中的設定。

Memcache 配置選項

名稱 預設值 可更改 變更日誌
memcache.allow_failover "1" PHP_INI_ALL 自 memcache 2.0.2 起可用。
memcache.max_failover_attempts "20" PHP_INI_ALL 自 memcache 2.1.0 起可用。
memcache.chunk_size "8192" PHP_INI_ALL 自 memcache 2.0.2 起可用。
memcache.default_port "11211" PHP_INI_ALL 自 memcache 2.0.2 起可用。
memcache.hash_strategy "standard" PHP_INI_ALL 自 memcache 2.2.0 起可用。
memcache.hash_function "crc32" PHP_INI_ALL 自 memcache 2.2.0 起可用。
session.save_handler "files" PHP_INI_ALL 自 memcache 2.1.2 起支援
session.save_path "" PHP_INI_ALL 自 memcache 2.1.2 起支援
memcache.protocol ascii >PHP_INI_ALL 自 memcache 3.0.0 起支援
memcache.redundancy 1 >PHP_INI_ALL 自 memcache 3.0.0 起支援
memcache.session_redundancy 2 >PHP_INI_ALL 自 memcache 3.0.0 起支援
memcache.compress_threshold 20000 >PHP_INI_ALL 自 memcache 3.0.3 起支援
memcache.lock_timeout 15 >PHP_INI_ALL 自 memcache 3.0.4 起支援

有關 PHP_INI_* 常量的詳細說明,請參閱文件“可在何處設定配置設定”。

  • memcache.allow_failover 布林值 − 是否透明地故障轉移到其他伺服器以處理錯誤。

  • memcache.max_failover_attempts 整數 − 定義在設定和獲取資料時嘗試的伺服器數量。僅與 memcache.allow_failover 結合使用。

  • memcache.chunk_size 整數 − 資料將以這種大小的塊進行傳輸,設定較低的值需要更多網路寫入。如果注意到其他無法解釋的減速,請嘗試將此值增加到 32768。

  • memcache.default_port 字串 − 如果未指定其他埠,則連線到 memcached 伺服器時使用的預設 TCP 埠號。

  • memcache.hash_strategy 字串 − 控制在將鍵對映到伺服器時使用哪種策略。將此值設定為 consistent 以啟用一致雜湊,這允許在池中新增或刪除伺服器,而不會導致鍵重新對映。將此值設定為 standard 會導致使用舊策略。

  • memcache.hash_function 字串 − 控制在將鍵對映到伺服器時應用哪個雜湊函式,crc32 使用標準 CRC32 雜湊,而 fnv 使用 FNV-1a。

  • session.save_handler 字串 − 透過將此值設定為 memcache 來使用 memcache 作為會話處理程式。

  • session.save_path 字串 − 定義一個用逗號分隔的伺服器URL列表,用於會話儲存,例如 "tcp://host1:11211, tcp://host2:11211"。每個URL可以包含應用於該伺服器的引數,這些引數與 Memcache::addServer() 方法的引數相同。例如 "tcp://host1:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

  • memcache.protocol 字串

  • memcache.redundancy 整數

  • memcache.session_redundancy 整數

  • memcache.compress_threshold 整數

  • memcache.lock_timeout 整數

基本用法

在這個例子中,一個物件被儲存到快取中,然後被檢索回來。物件和其他非標量型別在儲存之前會被序列化,所以不可能在快取中儲存資源(例如連線識別符號和其他)。

示例 1

<?php
   $memcache = new Memcache;
   $memcache->connect("localhost", 11211) or die ("Could not connect");
   $version = $memcache->getVersion();
   
   echo "Server's version: ".$version."<br/>\n";

   $tmp_object = new stdClass;
   $tmp_object->str_attr = "test";
   $tmp_object->int_attr = 123;
   $memcache->set("key", $tmp_object, false, 10) or die ("Failed to save data at the server");
   echo "Store data in the cache (data will expire in 10 seconds) <br/>\n";

   $get_result = $memcache->get("key");
   echo "Data from the cache: <br/>\n";

   var_dump($get_result);
?>

使用 memcache 會話處理程式

示例 2

<?php
   $session_save_path = "tcp://$host:$port?persistent=1&weight=2&timeout=2&retry_interval=10,,tcp://$host:$port"; 

   ini_set("session.save_handler", "memcache"); 
   ini_set("session.save_path", $session_save_path); 
?>

預定義常量

Memcache 常量

序號 名稱和描述
1

MEMCACHE_COMPRESSED (整數)

用於使用 Memcache::set()、Memcache::add() 和 Memcache::replace() 開啟動態資料壓縮。

2

PMEMCACHE_HAVE_SESSION (整數)

如果此 Memcache 會話處理程式可用,則為 1,否則為 0。

3

MEMCACHE_USER1 (整數)

用於使用 Memcache::set()、Memcache::add() 和 Memcache::replace() 開啟使用者定義的應用程式標誌。

4

MEMCACHE_USER2 (整數)

用於使用 Memcache::set()、Memcache::add() 和 Memcache::replace() 開啟使用者定義的應用程式標誌。

5

MEMCACHE_USER3 (整數)

用於使用 Memcache::set()、Memcache::add() 和 Memcache::replace() 開啟使用者定義的應用程式標誌。

6

MEMCACHE_USER4 (整數)

用於使用 Memcache::set()、Memcache::add() 和 Memcache::replace() 開啟使用者定義的應用程式標誌。

Memcache 函式

以下是 Memcache 函式:

序號 函式和描述
1

Memcache::add()

此函式可以將專案新增到伺服器。

2

Memcache::addServer()

此函式可以將 memcached 伺服器新增到連線池。

3

Memcache::close()

此函式可以關閉 memcached 伺服器連線。

4

Memcache::connect()

此函式可以開啟 memcached 伺服器連線。

5

memcache_debug()

此函式可以開啟/關閉除錯輸出。

6

Memcache::decrement()

此函式可以遞減專案的數值。

7

Memcache::delete()

此函式可以從伺服器刪除專案。

8

Memcache::flush()

此函式可以重新整理伺服器上所有現有專案。

9

Memcache::get()

此函式可以從伺服器檢索專案。

10

Memcache::getExtendedStats()

此函式可以獲取池中所有伺服器的統計資訊。

11

Memcache::getServerStatus()

此函式可以返回伺服器狀態。

12

Memcache::getStats()

此函式可以獲取伺服器的統計資訊。

13

Memcache::getVersion()

此函式可以返回伺服器的版本。

14

Memcache::increment()

此函式可以遞增專案的數值。

15

Memcache::pconnect()

此函式可以開啟 memcached 伺服器持久連線。

16

Memcache::replace()

此函式可以替換現有專案的數值。

17

Memcache::set()

此函式可以將資料儲存在伺服器上。

18

Memcache::setCompressThreshold()

此函式可以啟用對大值的自動壓縮。

19

Memcache::setServerParams()

此函式可以在執行時更改伺服器引數和狀態。

廣告