欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用Memcached在php下實現(xiàn)session機制 替換PHP的原生session支持

 更新時間:2010年08月21日 16:20:46   作者:  
利用Memcached在php下實現(xiàn)session機制,替換PHP的原生session支持
方法文件
session實現(xiàn)文件:memcachedsession.php
實現(xiàn)原理(也是PHP內(nèi)部session的實現(xiàn)原理):
1.先判斷客戶端有沒有sessionid,
a.沒有就添加一個sessionid給客戶端,通常是32位hash碼,同時初始化一個數(shù)組做session容器
b.如果客戶端有sessionid,則利用這個sessionid去memcached里面查數(shù)據(jù)。
2.用戶在頁面執(zhí)行過程中可以自行修改session容器里的session值
3.頁面最后會把用戶的session容器作為值,以用戶的sessionid作為鍵,把這個鍵值對保存到
memcached里面
復(fù)制代碼 代碼如下:

<?php
//memcached服務(wù)器連接地址
$_MEMCACHEAUTH = array(
'host' => 'localhost'
, 'port' => 11211
);
/*
獲取一些初始化設(shè)置值
*/
$_SESSION_NAME = ini_get("session.name"); //sessionid的名稱
$_SESSION_TIME = ini_get("session.cookie_lifetime"); //sessionid這個cookie的最大保存時間
$_SESSION_EXPIRE = ini_get("session.gc_maxlifetime"); //session鍵值對在memcached里面的過期時間
$_SESSION_MEMKEY = ""; //sessionid值
/*
自定義的_session_start()方法,替換PHP的原生session_start()方法
邏輯應(yīng)該是比較清楚的
*/
function _session_start()
{
global $_SESSION_NAME, $_SESSION_TIME, $_SESSION_MEMKEY;
global $_SESSION;
global $_MEMCACHEAUTH, $_sessionmem;
$_sessionmem = memcache_connect($_MEMCACHEAUTH['host'], $_MEMCACHEAUTH['port']);
if ( empty($_COOKIE[$_SESSION_NAME]) )
{
$_SESSION_MEMKEY = md5( uniqid() );
setcookie($_SESSION_NAME, $_SESSION_MEMKEY , $_SESSION_TIME, "/");
$_SESSION = array();
}
else
{
$_SESSION_MEMKEY = $_COOKIE[$_SESSION_NAME];
$_SESSION = memcache_get($_sessionmem, $_SESSION_MEMKEY );
if ( $_SESSION === FALSE )
{
$_SESSION = array();
}
}
//注冊一個handler,這個函數(shù)會在頁面執(zhí)行完的時候執(zhí)行
register_shutdown_function("_session_save_handler");
}
/*
頁面最后執(zhí)行的方法,用于保存session值,以及關(guān)閉memcached連接
*/
function _session_save_handler()
{
global $_sessionmem;
global $_SESSION, $_SESSION_NAME, $_SESSION_EXPIRE, $_SESSION_MEMKEY;
memcache_set($_sessionmem, $_SESSION_MEMKEY, $_SESSION, 0, $_SESSION_EXPIRE);
memcache_close($_sessionmem);
}
?>

測試文件:
設(shè)置session值
復(fù)制代碼 代碼如下:

<?php
/*
設(shè)置session值文件:session_set.php
*/
include_once "memcachedsession.php";
_session_start();
$_SESSION['a'] = time();
?>

獲取session值
復(fù)制代碼 代碼如下:

<?php
/*
獲取session值文件:session_get.php
*/
include_once "memcachedsession.php";
_session_start();
function getsession()
{
echo $_SESSION['a'];
}
getsession();
?>

Memcached的緩沖應(yīng)用還是非常不錯滴,呵呵,,,
轉(zhuǎn)載:jincon's 包 blog http://www.yi1.com.cn

相關(guān)文章

  • phpMyAdmin2.11.6安裝配置方法

    phpMyAdmin2.11.6安裝配置方法

    今天調(diào)試PHP數(shù)據(jù)庫Mysql,在單位的電腦上安裝phpMyAdmin數(shù)據(jù)庫管理軟件,本來是很簡單的事,卻出現(xiàn)了幾個問題:1/無法載入mcrypt擴展,請檢查PHP配置;/配置文件現(xiàn)在需要絕密的短語密碼(blowfish_secret);3/#2003-服務(wù)器沒有響應(yīng)。
    2008-08-08
  • php一個解析字符串排列數(shù)組的方法

    php一個解析字符串排列數(shù)組的方法

    這篇文章主要介紹了php一個解析字符串排列數(shù)組的方法,可實現(xiàn)字符串的拆分與排列功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • PHP實現(xiàn)的最大正向匹配算法示例

    PHP實現(xiàn)的最大正向匹配算法示例

    這篇文章主要介紹了PHP實現(xiàn)的最大正向匹配算法,簡單描述了最大正向匹配算法的概念、原理并結(jié)合實例形式分析了php實現(xiàn)與使用最大正向匹配算法的相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • 簡單談?wù)刾hp中ob_flush和flush的區(qū)別

    簡單談?wù)刾hp中ob_flush和flush的區(qū)別

    本文簡單的對php中ob_flush和flush進行了對比分析,得出了他們之間的區(qū)別,給需要的小伙伴參考下。
    2014-11-11
  • 利用php下載xls文件(自己動手寫的)

    利用php下載xls文件(自己動手寫的)

    如何利用php實現(xiàn)下載xls文件。根據(jù)ECSHOP的源碼,自己動手實現(xiàn)了一下,下面將成功實現(xiàn)的實例與大家分享下
    2014-04-04
  • php命名空間學(xué)習(xí)詳解

    php命名空間學(xué)習(xí)詳解

    這篇文章主要介紹了php命名空間的相關(guān)問題和技巧,需要的朋友可以參考下
    2014-02-02
  • php 數(shù)組字符串搜索array_search技巧

    php 數(shù)組字符串搜索array_search技巧

    本文給大家總結(jié)了一下PHP實現(xiàn)數(shù)組字符串搜索的幾種使用技巧,非常的簡單實用,有需要的小伙伴可以參考下
    2016-07-07
  • 用PHP ob_start()控制瀏覽器cache、生成html實現(xiàn)代碼

    用PHP ob_start()控制瀏覽器cache、生成html實現(xiàn)代碼

    Output Control 函數(shù)可以讓你自由控制腳本中數(shù)據(jù)的輸出。它非常地有用,特別是對于:當(dāng)你想在數(shù)據(jù)已經(jīng)輸出后,再輸出文件頭的情況。
    2010-02-02
  • PHP大文件切割上傳功能實例分析

    PHP大文件切割上傳功能實例分析

    這篇文章主要介紹了PHP大文件切割上傳功能,結(jié)合實例形式分析了php針對大文件切割上傳的原理、實現(xiàn)方法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-07-07
  • php whois查詢API制作方法

    php whois查詢API制作方法

    網(wǎng)站們經(jīng)常需要查詢網(wǎng)站whois信息,這里介紹一個使用php制作的whois api接口,方法也很簡單,下面詳細(xì)介紹一下。
    2011-06-06

最新評論