中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

PHP如何使用Memcached
來源:易賢網 閱讀:1500 次 日期:2016-08-27 13:27:22
溫馨提示:易賢網小編為您整理了“PHP如何使用Memcached”,方便廣大網友查閱!

一、memcached 簡介

memcached是高性能的分布式內存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。它可以應對任意多個連接,使用非阻塞的網絡IO。由于它的工作機制是在內存中開辟一塊空間,然后建立一個HashTable,Memcached自管理這些HashTable。

二、memcached 安裝

首先是下載 memcached 了,目前最新版本是 1.1.12,直接從官方網站即可下載到 memcached-1.1.12.tar.gz。除此之外,memcached 用到了 libevent,我下載的是 libevent-1.1a.tar.gz。

接下來是分別將 libevent-1.1a.tar.gz 和 memcached-1.1.12.tar.gz 解開包、編譯、安裝:

# tar -xzf libevent-1.1a.tar.gz # cd libevent-1.1a# ./configure --prefix=/usr# make# make install# cd .. # tar -xzf memcached-1.1.12.tar.gz# cd memcached-1.1.12 # ./configure --prefix=/usr# make# make install

安裝完成之后,memcached 應該在 /usr/bin/memcached。

三、運行 memcached 守護程序

運行 memcached 守護程序很簡單,只需一個命令行即可,不需要修改任何配置文件(也沒有配置文件給你修改 ):

/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd

參數解釋:

-d 以守護程序(daemon)方式運行 memcached;-m 設置 memcached 可以使用的內存大小,單位為 M; -l 設置監聽的 IP 地址,如果是本機的話,通??梢圆辉O置此參數;-p 設置監聽的端口,默認為 11211,所以也可以不設置此參數; -u 指定用戶,如果當前為 root 的話,需要使用此參數指定用戶。

當然,還有其它參數可以用,man memcached 一下就可以看到了。

四、memcached 的工作原理

首先 memcached 是以守護程序方式運行于一個或多個服務器中,隨時接受客戶端的連接操作,客戶端可以由各種語言編寫,目前已知的客戶端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客戶端在與 memcached 服務建立連接之后,接下來的事情就是存取對象了,每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,保存到 memcached 中的對象實際上是放置內存中的,并不是保存在 cache 文件中的,這也是為什么 memcached 能夠如此高效快速的原因。注意,這些對象并不是持久的,服務停止之后,里邊的數據就會丟失。

五、PHP 如何作為 memcached 客戶端

有兩種方法可以使 PHP 作為 memcached 客戶端,調用 memcached 的服務進行對象存取操作。

第一種,PHP 有一個叫做 memcache 的擴展,Linux 下編譯時需要帶上 –enable-memcache[=DIR] 選項,Window 下則在 php.ini 中去掉 php_memcache.dll 前邊的注釋符,使其可用。

除此之外,還有一種方法,可以避開擴展、重新編譯所帶來的麻煩,那就是直接使用 php-memcached-client。

本文選用第二種方式,雖然效率會比擴展庫稍差一些,但問題不大。

六、PHP memcached 應用示例

首先 下載 memcached-client.php,在下載了 memcached-client.php 之后,就可以通過這個文件中的類“memcached”對 memcached 服務進行操作了。其實代碼調用非常簡單,主要會用到的方法有 add()、get()、replace() 和 delete(),方法說明如下:

代碼如下:

add ($key, $val, $exp = 0)

往 memcached 中寫入對象,$key 是對象的唯一標識符,$val 是寫入的對象數據,$exp 為過期時間,單位為秒,默認為不限時間;

get ($key)

從 memcached 中獲取對象數據,通過對象的唯一標識符 $key 獲?。?/P>

代碼如下:

replace ($key, $value, $exp=0)

使用 $value 替換 memcached 中標識符為 $key 的對象內容,參數與 add() 方法一樣,只有 $key 對象存在的情況下才會起作用;

代碼如下:

delete ($key, $time = 0)

刪除 memcached 中標識符為 $key 的對象,$time 為可選參數,表示刪除之前需要等待多長時間。

下面是一段簡單的測試代碼,代碼中對標識符為 'mykey' 的對象數據進行存取操作:

<?php

// 包含 memcached 類文件

require_once('memcached-client.php');

// 選項設置

$options = array(

'servers' => array('192.168.1.1:11211'), //memcached 服務的地址、端口,可用多個數組元素表示多個 memcached 服務

'debug' => true, //是否打開 debug

'compress_threshold' => 10240, //超過多少字節的數據時進行壓縮

'persistant' => false //是否使用持久連接

);

// 創建 memcached 對象實例

$mc = new memcached($options);

// 設置此腳本使用的唯一標識符

$key = 'mykey';

// 往 memcached 中寫入對象

$mc->add($key, 'some random strings');

$val = $mc->get($key);

echo "n".str_pad('$mc->add() ', 60, '_')."n";

var_dump($val);

// 替換已寫入的對象數據值

$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));

$val = $mc->get($key);

echo "n".str_pad('$mc->replace() ', 60, '_')."n";

var_dump($val);

// 刪除 memcached 中的對象

$mc->delete($key);

$val = $mc->get($key);

echo "n".str_pad('$mc->delete() ', 60, '_')."n";

var_dump($val);

?>

是不是很簡單,在實際應用中,通常會把數據庫查詢的結果集保存到 memcached 中,下次訪問時直接從 memcached 中獲取,而不再做數據庫查詢操作,這樣可以在很大程度上減輕數據庫的負擔。通常會將 SQL 語句 md5() 之后的值作為唯一標識符 key。下邊是一個利用 memcached 來緩存數據庫查詢結果集的示例(此代碼片段緊接上邊的示例代碼):

<?php

$sql = 'SELECT * FROM users';

$key = md5($sql); //memcached 對象標識符

if ( !($datas = $mc->get($key)) ) {

// 在 memcached 中未獲取到緩存數據,則使用數據庫查詢獲取記錄集。

echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";

$conn = mysql_connect('localhost', 'test', 'test');

mysql_select_db('test');

$result = mysql_query($sql);

while ($row = mysql_fetch_object($result))

$datas[] = $row;

// 將數據庫中獲取到的結果集數據保存到 memcached 中,以供下次訪問時使用。

$mc->add($key, $datas);

} else {

echo "n".str_pad('Read datas from memcached.', 60, '_')."n";

}

var_dump($datas);

?>

可以看出,使用 memcached 之后,可以減少數據庫連接、查詢操作,數據庫負載下來了,腳本的運行速度也提高了。

之前我曾經寫過一篇名為《PHP 實現多服務器共享 SESSION 數據》文章,文中的 SESSION 是使用數據庫保存的,在并發訪問量大的時候,服務器的負載會很大,經常會超出 MySQL 最大連接數,利用 memcached,我們可以很好地解決這個問題,工作原理如下:

用戶訪問網頁時,查看 memcached 中是否有當前用戶的 SESSION 數據,使用 session_id() 作為唯一標識符;如果數據存在,則直接返回,如果不存在,再進行數據庫連接,獲取 SESSION 數據,并將此數據保存到 memcached 中,供下次使用; 當前的 PHP 運行結束(或使用了 session_write_close())時,會調用 My_Sess::write() 方法,將數據寫入數據庫,這樣的話,每次仍然會有數據庫操作,對于這個方法,也需要進行優化。使用一個全局變量,記錄用戶進入頁面時的 SESSION 數據,然后在 write() 方法內比較此數據與想要寫入的 SESSION 數據是否相同,不同才進行數據庫連接、寫入數據庫,同時將 memcached 中對應的對象刪除,如果相同的話,則表示 SESSION 數據未改變,那么就可以不做任何操作,直接返回了; 那么用戶 SESSION 過期時間怎么解決呢?記得 memcached 的 add() 方法有個過期時間參數 $exp 嗎?把這個參數值設置成小于 SESSION 最大存活時間即可。另外別忘了給那些一直在線的用戶延續 SESSION 時長,這個可以在 write() 方法中解決,通過判斷時間,符合條件則更新數據庫數據。

以上內容是小編給大家介紹的PHP如何使用Memcached,希望對大家有所幫助!

更多信息請查看網絡編程
易賢網手機網站地址:PHP如何使用Memcached
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點

版權所有:易賢網

中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
欧美狂野另类xxxxoooo| 欧美日韩国产综合一区二区三区| 日本不卡在线视频| 日韩av在线发布| 一本到高清视频免费精品| 日韩伦理av电影| 欧美性大战久久| 青青草国产成人av片免费| 日韩欧美一级精品久久| 久国产精品韩国三级视频| 日本一区二区视频在线观看| av在线一区二区| 午夜精品久久久| 国产精品美女久久久久久久久| 久久久99久久| 一区二区三区成人| 免费看欧美美女黄的网站| 欧美不卡一区二区| 色综合久久久久久久久| 免费日韩伦理电影| 国产精品少妇自拍| 欧美一级精品在线| 国产成人免费高清| 亚洲一区二区三区四区在线免费观看| 91精品国产欧美一区二区| 国产成人精品aa毛片| 亚洲一区二区三区视频在线| 久久久亚洲精品一区二区三区| 色婷婷激情综合| 欧美无砖砖区免费| 国产精品久久一级| 亚洲精品大片www| 久久久激情视频| 麻豆专区一区二区三区四区五区| 久久品道一品道久久精品| 色屁屁一区二区| 国产成人aaa| 久久精品国产亚洲5555| 亚洲福利电影网| 亚洲精品ww久久久久久p站| 国产亚洲精品免费| 精品久久久久久久久久久久久久久 | 美女一区二区久久| 中文一区一区三区高中清不卡| 欧美一卡在线观看| 欧美日韩国产大片| 欧美色网一区二区| 欧美日韩日日骚| 欧美三级中文字| 欧美日韩精品电影| 欧美日韩中文一区| 欧美精品一级二级| 欧美高清hd18日本| 91精品黄色片免费大全| 91精品国产一区二区三区| 3atv一区二区三区| 精品欧美黑人一区二区三区| 精品久久久久久综合日本欧美| 欧美大片日本大片免费观看| 日韩欧美第一区| 国产视频一区在线播放| 中文字幕第一页久久| 亚洲欧洲色图综合| 亚洲风情在线资源站| 日韩在线一区二区| 蜜桃久久精品一区二区| 国产麻豆一精品一av一免费| 成人黄色小视频| 欧洲日韩一区二区三区| 69精品人人人人| 久久久国产精品午夜一区ai换脸| 中文字幕欧美国产| 亚洲综合久久久久| 国产一区二区剧情av在线| 白白色 亚洲乱淫| 欧美人xxxx| 国产精品私人自拍| 亚洲不卡一区二区三区| 国产一区二区福利视频| 97精品国产露脸对白| 欧美区一区二区三区| 国产欧美一区在线| 亚洲成a人片在线观看中文| 久久精品国产在热久久| 91玉足脚交白嫩脚丫在线播放| 欧美精品色一区二区三区| 日本一区二区三区视频视频| 亚洲成a人在线观看| 成人免费视频一区二区| 这里只有精品99re| 国产精品久久久久久亚洲毛片 | 老司机精品视频导航| 成人91在线观看| 日韩一区二区三区免费观看| 中文字幕中文字幕在线一区| 美国毛片一区二区三区| 色婷婷综合五月| 欧美激情一区二区三区蜜桃视频| 无码av中文一区二区三区桃花岛| 成人午夜激情影院| 日韩欧美国产不卡| 亚洲1区2区3区视频| 一本一本大道香蕉久在线精品 | 18欧美乱大交hd1984| 韩国一区二区在线观看| 欧美日本韩国一区二区三区视频 | 亚洲欧美日韩综合aⅴ视频| 久久99国产精品免费| 欧美日韩精品一区二区在线播放| 国产精品乱码人人做人人爱| 国产麻豆欧美日韩一区| 日韩欧美一二三| 免费成人在线播放| 欧美一级电影网站| 三级欧美在线一区| 欧美日韩久久一区| 一区二区三区免费网站| 99久久亚洲一区二区三区青草| 国产亚洲欧美日韩日本| 国产福利一区在线| 国产视频视频一区| 激情小说欧美图片| 99久久精品国产一区二区三区 | 成人a免费在线看| 欧美三级欧美一级| 欧美国产精品专区| 久久久久国色av免费看影院| 五月天中文字幕一区二区| 色悠悠久久综合| 亚洲精品免费看| 在线观看一区二区精品视频| 1024亚洲合集| 一本一本大道香蕉久在线精品 | 美女www一区二区| 亚洲美女偷拍久久| 视频一区在线播放| 日韩avvvv在线播放| 欧美久久久久久久久久| 日韩高清在线电影| 日韩一区二区精品在线观看| 麻豆精品视频在线观看免费| 日韩免费在线观看| 国产精品影视在线观看| 国产日韩精品一区| 色欲综合视频天天天| 亚洲午夜精品一区二区三区他趣| 欧美视频一区二区| 欧美aaaaaa午夜精品| 久久美女艺术照精彩视频福利播放| 国产精品影音先锋| 亚洲精品日韩专区silk| 在线播放日韩导航| 国产原创一区二区三区| 亚洲欧美自拍偷拍| 4438x亚洲最大成人网| 狠狠网亚洲精品| 亚洲欧美韩国综合色| 91精品国产欧美一区二区成人| 国产精品一区二区久久不卡| 亚洲精品乱码久久久久久久久| 欧美日韩国产影片| 国产精品一区在线观看你懂的| 亚洲另类在线制服丝袜| 日韩一区二区电影| 99精品视频在线免费观看| 日韩高清不卡在线| 亚洲欧美成人一区二区三区| 精品嫩草影院久久| 欧美视频日韩视频在线观看| 国产精品一区二区黑丝| 亚洲成人午夜影院| 国产精品成人午夜| 日韩精品一区二区三区四区| 91欧美激情一区二区三区成人| 美国av一区二区| 亚洲一线二线三线视频| 欧美国产日韩在线观看| 4hu四虎永久在线影院成人| 91色婷婷久久久久合中文| 国产一区二区0| 日本欧美一区二区三区| 亚洲欧美日韩久久| 国产日韩欧美a| 精品国产伦一区二区三区观看方式| 91黄色免费版| 97久久超碰国产精品| 成人午夜免费av| 韩国欧美国产一区| 强制捆绑调教一区二区| 午夜精品在线看| 亚洲自拍欧美精品| 亚洲日本在线天堂| 亚洲欧洲日本在线| 国产精品欧美精品| 久久综合九色综合久久久精品综合| 久久久精品欧美丰满| 欧美tickling挠脚心丨vk| 91蜜桃视频在线| www.亚洲激情.com| 高潮精品一区videoshd|