最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Ubuntu server 11.04安裝memcache及php使用memcache來(lái)存儲(chǔ)session的方法

 更新時(shí)間:2016年05月31日 12:30:47   作者:keyunq  
這篇文章主要介紹了Ubuntu server 11.04安裝memcache及php使用memcache來(lái)存儲(chǔ)session的方法,涉及memcache服務(wù)器的安裝及php操作memcache存儲(chǔ)session的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了Ubuntu server 11.04安裝memcache及php使用memcache來(lái)存儲(chǔ)session的方法。分享給大家供大家參考,具體如下:

1、首先安裝memcache服務(wù)端:

sudo apt-get install memcached

安裝完成后系統(tǒng) 自動(dòng)啟動(dòng)了 memcached服務(wù)占用11211端口

如需重新配置11211端口的服務(wù) 需要關(guān)閉已開啟的memcached服務(wù)

手動(dòng)啟動(dòng):

memcached -d -m 128 -p 11211 -u memcache

這里需要說(shuō)明一下memcached服務(wù)的啟動(dòng)參數(shù):

-p 監(jiān)聽的端口
-l 連接的IP地址, 默認(rèn)是本機(jī)
-d start 啟動(dòng)memcached服務(wù)
-d restart 重起memcached服務(wù)
-d stop|shutdown 關(guān)閉正在運(yùn)行的memcached服務(wù)
-d install 安裝memcached服務(wù)
-d uninstall 卸載memcached服務(wù)
-u 以的身份運(yùn)行 (僅在以root運(yùn)行的時(shí)候有效)
-m 最大內(nèi)存使用,單位MB。默認(rèn)64MB
-M 內(nèi)存耗盡時(shí)返回錯(cuò)誤,而不是刪除項(xiàng)
-c 最大同時(shí)連接數(shù),默認(rèn)是1024
-f 塊大小增長(zhǎng)因子,默認(rèn)是1.25-n 最小分配空間,key+value+flags默認(rèn)是48
-h 顯示幫助

2、安裝PHP Memecache 客戶端

$ sudo apt-get install php5-memcache

重啟web服務(wù)器

測(cè)試memcache代碼:

<?php
$mem = new Memcache; //創(chuàng)建Memcache對(duì)象
$mem->connect("127.0.0.1", 11211); //連接Memcache服務(wù)器
$val = "這是一個(gè)Memcache的測(cè)試.";
$key = md5($val);
if(($k = $mem->get($key))){ //判斷是否獲取到指定的key
  echo 'from cache:'.$k;
} else {
  echo 'normal'; //這里我們?cè)趯?shí)際使用中就需要替換成查詢數(shù)據(jù)庫(kù)并創(chuàng)建緩存.
  $mem->set($key, $val, 0, 120); //增加插入一條緩存,緩存時(shí)間為120s
}

用memcache存儲(chǔ)session

一般地, Session 是以文本文件形式存儲(chǔ)在服務(wù)器端的。如果使用 Seesion,或者該 PHP 文件要調(diào)用 Session 變量,那么就必須在調(diào)用 Session 之前啟動(dòng)它,使用 session_start() 函數(shù)。其它都不需要你設(shè)置了,PHP 自動(dòng)完成 Session 文件的創(chuàng)建。其默認(rèn) Session 的存放路徑是服務(wù)器的系統(tǒng)臨時(shí)文件夾。

但是如果碰到大數(shù)據(jù)量的Sesstion的時(shí)候, 使用基于文件的Session存取瓶頸可能都是在磁盤IO操作上,現(xiàn)在利用Memcached來(lái)保存Session數(shù)據(jù),直接通過(guò)內(nèi)存的方式,效率自然能夠提高不少。 在讀寫速度上會(huì)比 files 時(shí)快很多,而且在多個(gè)服務(wù)器需要共用 session 時(shí)會(huì)比較方便,將這些服務(wù)器都配置成使用同一組 memcached 服務(wù)器就可以,減少了額外的工作量。

其缺點(diǎn)是 session 數(shù)據(jù)都保存在 memory 中,一旦宕機(jī),數(shù)據(jù)將會(huì)丟失。但對(duì) session 數(shù)據(jù)來(lái)說(shuō)并不是嚴(yán)重的問(wèn)題。

如何用 memcached 來(lái)存儲(chǔ) session呢?以下是基本的配置步驟:

1. 安裝 memcached (略過(guò),不清楚的筒子可以查看前面一篇文章:http://www.fzitv.net/article/85510.htm
在 phpinfo 輸出中的 "Registered save handlers" 會(huì)有 "files user sqlite"。

2. 修改配置文件,

①. 在 php.ini 中全局設(shè)置(* 需要重啟服務(wù)器)

session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

②. 或者某個(gè)目錄下的 .htaccess :

php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"

③. 也可以在某個(gè)一個(gè)應(yīng)用中:

ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.1:11211");

注:使用多個(gè) memcached server 時(shí)用逗號(hào)","隔開,并且和 Memcache::addServer() 文檔中說(shuō)明的一樣,可以帶額外的參數(shù)"persistent"、"weight"、"timeout"、"retry_interval" 等等,類似這樣的:

"tcp://host:port?persistent=1&weight=2,tcp://host2:port2" 。

3. 啟動(dòng) memcached

復(fù)制代碼 代碼如下:
memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P /tmp/memcached.pid

4.測(cè)試 創(chuàng)建一個(gè) session

<?php
//set_session.php
session_start();
if (!isset($_SESSION['admin'])) {
  $_SESSION['admin'] = 'wan';
}
print $_SESSION['admin'];
print "/n";
print session_id();
?>

5. 用 sessionid 去 memcached 里查詢一下

<?php
//get_session.php
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
var_dump($mem->get('0935216dbc0d721d629f89efb89affa6'));
?>

復(fù)制代碼 代碼如下:
[root@localhost html]# /usr/local/webserver/php/bin/php -f get_session.php

輸出結(jié)果:

string(16) "admin|s:3:"wan";"

證明 session 正常工作。

再次深入 多域名網(wǎng)站利用MEMCACHE方式共享SESSION數(shù)據(jù)

通過(guò)了解 SESSION 的工作原理,我們可以發(fā)現(xiàn),在默認(rèn)情況下,各個(gè)服務(wù)器會(huì)各自分別對(duì)同一個(gè)客戶端產(chǎn)生 SESSION ID,如對(duì)于同一個(gè)用戶瀏覽器,A 服務(wù)器產(chǎn)生的 SESSION ID 是 30de1e9de3192ba6ce2992d27a1b6a0a,而 B 服務(wù)器生成的則是 c72665af28a8b14c0fe11afe3b59b51b。另外,PHP 的 SESSION 數(shù)據(jù)都是分別保存在本服務(wù)器的文件系統(tǒng)中。

確定了問(wèn)題所在之后,就可以著手進(jìn)行解決了。想要共享 SESSION 數(shù)據(jù),那就必須實(shí)現(xiàn)兩個(gè)目標(biāo):一個(gè)是各個(gè)服務(wù)器對(duì)同一個(gè)客戶端產(chǎn)生的 SESSION ID 必須相同,并且可通過(guò)同一個(gè) COOKIE 進(jìn)行傳遞,也就是說(shuō)各個(gè)服務(wù)器必須可以讀取同一個(gè)名為 PHPSESSID 的 COOKIE;另一個(gè)是 SESSION 數(shù)據(jù)的存儲(chǔ)方式/位置必須保證各個(gè)服務(wù)器都能夠訪問(wèn)到。簡(jiǎn)單地說(shuō)就是多服務(wù)器共享客戶端的 SESSION ID,同時(shí)還必須共享服務(wù)器端的 SESSION 數(shù)據(jù)。

第一個(gè)目標(biāo)的實(shí)現(xiàn)其實(shí)很簡(jiǎn)單,只需要對(duì) COOKIE 的域(domain)進(jìn)行特殊地設(shè)置即可,默認(rèn)情況下,COOKIE 的域是當(dāng)前服務(wù)器的域名/IP 地址,而域不同的話,各個(gè)服務(wù)器所設(shè)置的 COOKIE 是不能相互訪問(wèn)的,如 www.aaa.com 的服務(wù)器是不能讀寫 www.bbb.com 服務(wù)器設(shè)置的 COOKIE 的。這里我們所說(shuō)的同一網(wǎng)站的服務(wù)器有其特殊性,那就是他們同屬于同一個(gè)一級(jí)域,如:tieba.xiaoyuan.com 和 www.xiaoyuan.com 都屬于域 .xiaoyuan.com,那么我們就可以設(shè)置 COOKIE 的域?yàn)?.xiaoyuan.com,這樣 tieba.xiaoyuan.com、www.xiaoyuan.com 等等都可以訪問(wèn)此 COOKIE。PHP 代碼中的設(shè)置方法如下:

<?php
ini_set('session.cookie_domain', 'xiaoyuan.com');
?>

這樣各個(gè)服務(wù)器共享同一客戶端 SESSION ID 的目的就達(dá)到了。

于是 可以在 a.domain.com 下

session.php

<?php
ini_set('session.cookie_domain', 'domain.com');
session_start();
if (!isset($_SESSION['admin'])) {
  $_SESSION['admin'] = 'wan';
}
print $_SESSION['admin'];
print "\n";
print session_id();

在b.domain.com下

session2.php

<?php
ini_set('session.cookie_domain', 'domain.com');
session_start();
echo $_SESSION['admin'];

希望本文所述對(duì)大家Ubuntu平臺(tái)上的php程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 簡(jiǎn)單實(shí)現(xiàn)限定phpmyadmin訪問(wèn)ip的方法

    簡(jiǎn)單實(shí)現(xiàn)限定phpmyadmin訪問(wèn)ip的方法

    如果你需要限定phpmyadmin特定的ip地址段進(jìn)行訪問(wèn),一個(gè)簡(jiǎn)單的方式可以在配置文件中進(jìn)行簡(jiǎn)單限定。
    2013-03-03
  • PHP按指定鍵值對(duì)二維數(shù)組進(jìn)行排序的方法

    PHP按指定鍵值對(duì)二維數(shù)組進(jìn)行排序的方法

    這篇文章主要介紹了PHP按指定鍵值對(duì)二維數(shù)組進(jìn)行排序的方法,涉及PHP二維數(shù)組的遍歷及array_multisort函數(shù)的使用技巧,需要的朋友可以參考下
    2015-12-12
  • 提高PHP編程效率的方法

    提高PHP編程效率的方法

    PHP開發(fā)中需要注意的問(wèn)題,這樣要吧提高PHP編程效率
    2013-11-11
  • 基于PHP實(shí)現(xiàn)微博熱搜實(shí)時(shí)監(jiān)控平臺(tái)

    基于PHP實(shí)現(xiàn)微博熱搜實(shí)時(shí)監(jiān)控平臺(tái)

    在學(xué)習(xí)、“脫發(fā)”之余,便是去微博看看有沒有發(fā)生什么有趣的事情,或是了解一下正在發(fā)生著哪些“大事”,亦或是某些讓我久久不能平復(fù)的事…本文將用PHP實(shí)現(xiàn)微博熱搜實(shí)時(shí)監(jiān)控平臺(tái),需要的可以參考一下
    2022-06-06
  • 關(guān)于URL最大長(zhǎng)度限制的相關(guān)資料查證

    關(guān)于URL最大長(zhǎng)度限制的相關(guān)資料查證

    這篇文章主要介紹了關(guān)于URL最大長(zhǎng)度限制的相關(guān)資料查證,這里記錄一下,方便以后使用。
    2014-12-12
  • php生成隨機(jī)顏色的方法

    php生成隨機(jī)顏色的方法

    這篇文章主要介紹了php生成隨機(jī)顏色的方法,通過(guò)一個(gè)自定義函數(shù)結(jié)合隨機(jī)數(shù)的生成來(lái)實(shí)現(xiàn)生成隨機(jī)顏色的功能,代碼簡(jiǎn)潔易懂,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-11-11
  • 解析php中如何直接執(zhí)行SHELL

    解析php中如何直接執(zhí)行SHELL

    本篇文章是對(duì)php中直接執(zhí)行SHELL的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php字符集轉(zhuǎn)換

    php字符集轉(zhuǎn)換

    本文主要介紹了PHP通過(guò)iconv將字符串從GBK轉(zhuǎn)換為UTF8字符集。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-01-01
  • 項(xiàng)目中應(yīng)用Redis+Php的場(chǎng)景

    項(xiàng)目中應(yīng)用Redis+Php的場(chǎng)景

    Redis是一個(gè)開源的使用ANSI C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。今天我們來(lái)看下php結(jié)合redis的一些應(yīng)用場(chǎng)景
    2016-05-05
  • PHP常用的三種設(shè)計(jì)模式

    PHP常用的三種設(shè)計(jì)模式

    本文為大家介紹常用的三種php設(shè)計(jì)模式:?jiǎn)卫J?、工廠模式、觀察者模式,具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-02-02

最新評(píng)論

克山县| 洱源县| 海丰县| 阜平县| 工布江达县| 图木舒克市| 乐安县| 青铜峡市| 德江县| 巴彦县| 海南省| 砚山县| 马鞍山市| 民权县| 咸宁市| 白玉县| 玉树县| 化隆| 龙江县| 清水河县| 呼伦贝尔市| 来安县| 响水县| 凤阳县| 永宁县| 班玛县| 宣恩县| 乐平市| 庆元县| 定兴县| 汾阳市| 平远县| 柳林县| 泰兴市| 吉木乃县| 宁远县| 临高县| 乌海市| 长汀县| 龙岩市| 汉源县|