程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 講解PHP創建Memcached客戶端緩存

講解PHP創建Memcached客戶端緩存

編輯:關於PHP編程

emcached 是一個鍵值存儲系統,它將關鍵數據存儲在內存中,大大減少存取數據的時間。使用Memcached的好處不言而喻,它不僅減少了系統訪問數據庫的壓力,而且提高系統的反應速度。至於什麼樣的系統需要使用memcache,筆者建議數據量大,訪問頻繁系統可以采取Memcached作為緩存的中間層。

使用Memcached的缺點除了增加程序的代碼量,還有就是不能保證數據庫的實時性,另外在第一次初始化數據庫會需要額外的時間。但是這些的缺點比起它的優點是很微不足道。

PHP帶有操作Memcached的擴展,它提供一組函數來操作Memcached服務器,將他們簡單分一下類:
1.Memcached的連接函數(connect, pconnect)
2.memcahced的操作函數(set, get, delete, replace, flush)
3.多服務器配置函數(addServer)
4.狀態監控函數(getStats.....)

下面摘一段代碼,給大家一個直觀的印象:(假設Memcached安裝在172.10.10.10上面,端口號12121)
$memcache = new Memcached();  
$memcahce->connect(172.10.10.10, 12121);  
$memcache->set(Key, Value);  
$memcache->get(Key);
上面的主要完成了Memcached的簡單操作流程:連接Memcached服務器,設置值,取值(Key的值是Value);

這裡需要向大家說明一下addServer函數和connect函數,addServer是將多個服務器放在連接池,而connect只是將連接某一台服務器;如果在使用了addServer,再使用connect,這裡就會只使用一台服務器。

介紹了Memcached的使用後,下面向大家介紹如何編寫自己的PHP Memcached的客戶端。

Memcached是一個服務器端程序,我們自然可以使用PHP中的套接字程序來連接,並進行相應的通訊,完成數據的存儲操作。要使用PHP和 Memcached通訊,首先需要知道Memcached的通訊協議,相關的信息可以在Memcached的源碼的doc/protocol.txt中找到。

這裡筆者使用get命令向大家展示一下這個過程
這個命令主要是從數據中提取數據,輸入格式: get key
如果服務器沒有這個值,則返回: END
如果這個值存在,返回: VALUE key <標記> <數據長度> 數據塊

以下代碼是簡單模擬的客戶端操作
$fp = fsocketopen(172.10.10.10, 12121, $errorno, $errstr, 1);  
if(!$fp)  
echo "$errstr";  
else
{  
$out = "get key  ";  
fwrite($out);  
while(!feof($fp))  
$str  . = fgets($fp);  
if(stripos($str, END) ===0)  
exit("NO value find")  
$arr = implode( , $str);  
echo $arr[1];  
}
簡單解釋上面的代碼,使用fsocketopen打開服務器的socket通訊接口,然後向其發送get key命令, 然後獲取返回的數據,並解析返回的數據。這裡都沒有做異常的處理,在編程的時候要填上。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved