목차
php之session最优将信息写入memcache中管理
백엔드 개발 PHP 튜토리얼 php之session最优将信息写入memcache中管理_PHP教程

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

Jul 13, 2016 am 10:01 AM
정보

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用到的变量并初始化

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<!--?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 为常量,定义下标

再初始化方法

1

2

3

4

5

6

//初始化方法

private static function init($handler){

    self::$handler=$handler;

    self::$lifetime=ini_get(&#39;session.gc_maxlifetime&#39;);

    self::$time=time();

}

로그인 후 복사


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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

//开启session

public static function start(Memcache $memcache){

    //首先将属性初始化

    self::init($memcache);  //调用handler,以后调用handler时都是用memcache

    session_set_save_handler(

        array(__CLASS__,&#39;open&#39;),//调用本类的open方法

        array(__CLASS__,&#39;close&#39;),

        array(__CLASS__,&#39;read&#39;),

        array(__CLASS__,&#39;write&#39;),

        array(__CLASS__,&#39;destroy&#39;),

        array(__CLASS__,&#39;gc&#39;)

        );

 

    //调用session_start()

    session_start();

}

로그인 후 복사

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

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

1

2

3

4

5

6

public static function open($path, $name){

    return true;

}

public static function close(){

    return true;

}

로그인 후 복사

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

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

1

2

3

4

5

6

7

public static function read($PHPSESSID){

    $out=self::$handler->get(self::session_key($PHPSESSID));  //得到该下标输出的数据

    if($out===false || $out ==null){

        return &#39;&#39;;  //out得到数据没有,返回空

    }

    return $out//返回得到的数据

}

로그인 후 복사

write() :

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

1

2

3

4

5

6

public static function write($PHPSESSID, $data){

    //判断是否有数据

    $method=$data ? &#39;set&#39; : &#39;relpace&#39;;

    return self::$handler->$method(self::session_key($PHPSESSID), $data, MEMCACHE_COMPRESSED, self::$lifetime);

 

}

로그인 후 복사

destroy() 和 gc() :

destroy()调用自身的delete方法

1

2

3

4

5

6

7

public static function destroy($PHPSESSID){

    return self::$handler->delete(self::session_key($PHPSESSID));  //调用delete方法

 

}

public static function gc($lifetime){

        return true;

}

로그인 후 복사

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

1

2

3

4

5

private static function session_key($PHPSESSID){

    $session_key=self::NS.$PHPSESSID; //键值为自身和传进来的phpsessid

 

    return $session_key;

}

로그인 후 복사

 

 

 

结果显示

如果成功,在telnet中显示

\

 

\

 

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

 


 

 

 

 

 

 

 

 

 

 

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/971083.htmlTechArticlephp之session最优将信息写入memcache中管理 前面也讲到了用memcache存储数据信息缓存的方法和好处,这样能够减少访问数据库的次数,减少访问...
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Microsoft Word에서 작성자 및 마지막 수정 정보를 제거하는 방법 Microsoft Word에서 작성자 및 마지막 수정 정보를 제거하는 방법 Apr 15, 2023 am 11:43 AM

Microsoft Word에서 작성자 및 마지막 수정 정보를 제거하는 방법

NameDrop과 연락처 정보를 공유하는 방법: iOS 17용 방법 가이드 NameDrop과 연락처 정보를 공유하는 방법: iOS 17용 방법 가이드 Sep 16, 2023 pm 06:09 PM

NameDrop과 연락처 정보를 공유하는 방법: iOS 17용 방법 가이드

Windows 11에서 GPU를 가져오고 그래픽 카드 세부 정보를 확인하는 방법 Windows 11에서 GPU를 가져오고 그래픽 카드 세부 정보를 확인하는 방법 Nov 07, 2023 am 11:21 AM

Windows 11에서 GPU를 가져오고 그래픽 카드 세부 정보를 확인하는 방법

단일 뷰 NeRF 알고리즘 S^3-NeRF는 다중 조명 정보를 사용하여 장면 형상 및 재료 정보를 복원합니다. 단일 뷰 NeRF 알고리즘 S^3-NeRF는 다중 조명 정보를 사용하여 장면 형상 및 재료 정보를 복원합니다. Apr 13, 2023 am 10:58 AM

단일 뷰 NeRF 알고리즘 S^3-NeRF는 다중 조명 정보를 사용하여 장면 형상 및 재료 정보를 복원합니다.

iPhone에서 NameDrop이 작동하는 방식(및 비활성화하는 방법) iPhone에서 NameDrop이 작동하는 방식(및 비활성화하는 방법) Nov 30, 2023 am 11:53 AM

iPhone에서 NameDrop이 작동하는 방식(및 비활성화하는 방법)

WeChat에서 메시지 수신이 지연되는 이유는 무엇입니까? WeChat에서 메시지 수신이 지연되는 이유는 무엇입니까? Sep 19, 2023 pm 03:02 PM

WeChat에서 메시지 수신이 지연되는 이유는 무엇입니까?

iOS 17 NameDrop: iPhone에서 연락처 정보를 쉽게 공유하는 방법 iOS 17 NameDrop: iPhone에서 연락처 정보를 쉽게 공유하는 방법 Jul 30, 2023 pm 05:18 PM

iOS 17 NameDrop: iPhone에서 연락처 정보를 쉽게 공유하는 방법

컴퓨터 네트워크에서 정보를 전송하는 단위는 무엇입니까? 컴퓨터 네트워크에서 정보를 전송하는 단위는 무엇입니까? Dec 07, 2020 pm 05:26 PM

컴퓨터 네트워크에서 정보를 전송하는 단위는 무엇입니까?

See all articles