首頁 後端開發 php教程 php之session最优将信息写下memcache中管理

php之session最优将信息写下memcache中管理

Jun 13, 2016 pm 12:16 PM
handler memcache session static

php之session最优将信息写入memcache中管理

前面也讲到了用memcache存储数据信息缓存的方法和好处,这样能够减少访问数据库的次数,减少访问量大时对数据库的压力

将session存储到memcache中管理需要了解memcache、session的使用和session_set_save_handler()

同样先编写一个公用的类,当然采用静态的成员方法

memcache 指令用telnet操作



同样现在根目录下建立需要用到的文件


其中memsession.class.php 是公用的memcache存储类文件,one.php、two.php和three.php是测试文件,items.php 是输出数据数组的

session.class.php中:

首先定义连接memcache用到的变量并初始化

<?php class MemSession{    	private static $handler=null;    	private static $lifetime=null;    	private static $time=null;    	const NS=&#39;session_&#39;;  //定义下标     ...    	&#160;...}&#160; &#160; $memcache=new Memcache;&#160; &#160; //连接memcache&#160; &#160; $memcache->connect("localhost",11211) or die("could not connect");    MemSession::start($memcache);
登入後複製



注意的是 NS 为常量,定义下标

 

再初始化方法

    	//初始化方法    	private static function init($handler){    		self::$handler=$handler;    		self::$lifetime=ini_get('session.gc_maxlifetime');    		self::$time=time();    	}
登入後複製


开启session,并定义调用本类中的open、close等方法

    	//开启session    	public static function start(Memcache $memcache){    		//首先将属性初始化    		self::init($memcache);  //调用handler,以后调用handler时都是用memcache    		session_set_save_handler(    			array(__CLASS__,'open'),//调用本类的open方法    			array(__CLASS__,'close'),    			array(__CLASS__,'read'),    			array(__CLASS__,'write'),    			array(__CLASS__,'destroy'),    			array(__CLASS__,'gc')    			);    		//调用session_start()    		session_start();    	}
登入後複製

接下来就是定义上面调用的这些方法

open() 和 close() 只要返回真就可以,但 open() 的参数为 路径(path) 和 名称(name)

    	public static function open($path, $name){    		return true;    	}    	public static function close(){    		return true;    	}
登入後複製

read()  只需要有PHPSESSID参数即可

但要判断传入的out 参数是否有值,有值就返回out的数据

    	public static function read($PHPSESSID){    		$out=self::$handler->get(self::session_key($PHPSESSID));  //得到该下标输出的数据    		if($out===false || $out ==null){    			return '';  //out得到数据没有,返回空    		}    		return $out;  //返回得到的数据    	}
登入後複製

write() :

返回自身的id,数据,和生命时长

    	public static function write($PHPSESSID, $data){    		//判断是否有数据    		$method=$data ? 'set' : 'relpace';    		return self::$handler->$method(self::session_key($PHPSESSID), $data, MEMCACHE_COMPRESSED, self::$lifetime);    	}
登入後複製


destroy() 和 gc() :

destroy()调用自身的delete方法

    	public static function destroy($PHPSESSID){    		return self::$handler->delete(self::session_key($PHPSESSID));  //调用delete方法    	}    	public static function gc($lifetime){    			return true;    	}
登入後複製

接下来需要定义一个传入PHPSESSID的方法

    	private static function session_key($PHPSESSID){    		$session_key=self::NS.$PHPSESSID; //键值为自身和传进来的phpsessid    		return $session_key;    	}
登入後複製



结果显示

如果成功,在telnet中显示





表示session数据信息储存到memcache成功















本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

session失效怎麼解決 session失效怎麼解決 Oct 18, 2023 pm 05:19 PM

session失效通常是由於 session 的生存時間過期或伺服器關閉導致的。其解決方法:1、延長session的生存時間;2、使用持久化儲存;3、使用cookie;4、非同步更新session;5、使用會話管理中介軟體。

PHP Session 跨域問題的解決方法 PHP Session 跨域問題的解決方法 Oct 12, 2023 pm 03:00 PM

PHPSession跨域問題的解決方法在前後端分離的開發中,跨域請求已成為常態。在處理跨域問題時,我們通常會涉及session的使用和管理。然而,由於瀏覽器的同源策略限制,跨域情況下預設無法共享session。為了解決這個問題,我們需要採用一些技巧和方法來實現session的跨域共享。一、使用cookie跨域共享session最常

如何使用PHP開發中的Memcache? 如何使用PHP開發中的Memcache? Nov 07, 2023 pm 12:49 PM

在Web開發中,我們經常需要使用快取技術來提高網站的效能和回應速度。 Memcache是​​一種流行的快取技術,它可以快取任何資料類型、支援高並發和高可用性。本文將介紹如何使用PHP開發中的Memcache,並提供具體程式碼範例。一、安裝Memcache要使用Memcache,我們首先需要在伺服器上安裝Memcache擴充。在CentOS作業系統中,可以使用以下命令

JavaScript和PHP的cookie之間有哪些差異? JavaScript和PHP的cookie之間有哪些差異? Sep 02, 2023 pm 12:29 PM

JavaScriptCookie使用JavaScriptcookie是記住和追蹤偏好、購買、佣金和其他資訊的最有效方法。更好的訪客體驗或網站統計所需的資訊。 PHPCookieCookie是儲存在客戶端電腦上的文字檔案並保留它們用於追蹤目的。 PHP透明地支援HTTPcookie。 JavaScriptcookie如何運作?您的伺服器將一些資料傳送到訪客的瀏覽器cookie的形式。瀏覽器可以接受cookie。如果存在,它將作為純文字記錄儲存在訪客的硬碟上。現在,當訪客到達網站上的另一個頁面時

PHP Session 跨域與AJAX的非同步通訊最佳化 PHP Session 跨域與AJAX的非同步通訊最佳化 Oct 12, 2023 am 09:22 AM

PHPSession跨域與AJAX的非同步通訊最佳化隨著互聯網的發展,跨域存取和非同步通訊已成為現代web應用開發的常見需求。本文將重點介紹如何使用PHPSession實現跨域訪問,並提供一些最佳化的方法來改善AJAX的非同步通訊效率。一、跨網域存取的問題在網路開發中,當瀏覽器從一個網域的網頁上發起一個HTTP請求,然後傳回的回應資料屬於另一個網域時,就會發生

PHP開發中如何使用Memcache進行高效率的資料讀寫操作? PHP開發中如何使用Memcache進行高效率的資料讀寫操作? Nov 07, 2023 pm 03:48 PM

在PHP開發中,使用Memcache快取系統可以大幅提高資料讀寫的效率。 Memcache是​​一種基於記憶體的快取系統,它可以將資料緩存在記憶體中,避免頻繁的讀寫資料庫。本文將介紹如何在PHP中使用Memcache進行高效率的資料讀寫操作,並提供具體的程式碼範例。一、安裝和設定Memcache首先,需要在伺服器上安裝Memcache擴充。可以透過

PHP開發中如何使用Memcache進行高效率的資料寫入與查詢? PHP開發中如何使用Memcache進行高效率的資料寫入與查詢? Nov 07, 2023 pm 01:36 PM

PHP開發中如何使用Memcache進行高效率的資料寫入與查詢?隨著網路應用的不斷發展,對於系統效能的要求越來越高。在PHP開發中,為了提高系統的效能和反應速度,我們經常使用各種快取技術。而其中一個常用的快取技術就是Memcache。 Memcache是​​一種高效能的分散式記憶體物件快取系統,可以用來快取資料庫查詢結果、頁面片段、會話資料等。透過將資料儲存在內存

session失效的原因有哪些 session失效的原因有哪些 Oct 17, 2023 pm 05:01 PM

session失效的原因有會話逾時、會話數量限制、會話完整性檢查、伺服器重新啟動、瀏覽器或裝置問題等等。詳細介紹:1、會話逾時:伺服器為Session設定了一個預設的逾時時間,當使用者在一段時間內沒有與伺服器互動時,Session將自動失效;2、會話數量限制:伺服器為每個使用者的Session數量設定了一個限制,當使用者創建的Session數量超過這個限制時,最新的會覆蓋最早的等等。

See all articles