1. 1 <?php
  2. 2 class MemSession{
  3. 3 private static $handler = null;
  4. 4 private static $lifetime = null;
  5. 5 private static $time = null;
  6. 6 const MS = 'session';
  7. 7
  8. 8 private static function init($handler){
  9. 9 self::$handler = $handler;
  10. 10 self::$lifetime = ini_get('session.gc_maxlifetime');
  11. 11 self::$time = time();
  12. 12 }
  13. 13
  14. 14 public static function start($memcache){
  15. 15 self::init($memcache);
  16. 16 //调用类中的方法要用数组,__CLASS__代表本类
  17. 17 session_set_save_handler(
  18. 18 array(__CLASS__,'open'),
  19. 19 array(__CLASS__,'close'),
  20. 20 array(__CLASS__,'read'),
  21. 21 array(__CLASS__,'write'),
  22. 22 array(__CLASS__,'destroy'),
  23. 23 array(__CLASS__,'gc')
  24. 24 );
  25. 25 session_start();
  26. 26 }
  27. 27
  28. 28 public static function open($path,$name){
  29. 29
  30. 30 }
  31. 31 public static function close(){
  32. 32
  33. 33 }
  34. 34
  35. 35 public static function read($PHPSESSID){
  36. 36 $val = self::$handler->get(self::session_key($PHPSESSID));
  37. 37
  38. 38 if($val===false || $val==null){
  39. 39 return false;
  40. 40 }
  41. 41 return $val;
  42. 42 }
  43. 43 public static function write($PHPSESSID,$data){
  44. 44 $method = $data? 'set':'replace';
  45. 45 return self::$handler->$method(self::session_key($PHPSESSID),$data,MEMCACHE_COMPRESSED,self::$lifetime);
  46. 46 }
  47. 47
  48. 48 public static function destroy($PHPSESSID){
  49. 49 return self::$handle->delete(self::session_key($PHPSESSID));
  50. 50 }
  51. 51 //memcache本身就有限定时间,数据自动销毁,所以可不使用gc方法
  52. 52 public static function gc($lifetime){
  53. 53 return true;
  54. 54 }
  55. 55
  56. 56 //给sessionID加前缀,避免key重复
  57. 57 private static function session_key($PHPSESSID){
  58. 58 $session_key = self::MS.$PHPSESSID;
  59. 59 return $session_key;
  60. 60 }
  61. 61 }
  62. 62 $mem = new Memcache;
  63. 63 $mem->connect("localhost",11211) or die("could not connect");
  64. 64 MemSession::start($mem);

session写入memcache的更多相关文章

  1. 将Session写入Memcache

    通过session_set_save_handler()方法自定义Session写入Memcache <?php class MemSession{ private static $handle ...

  2. 将Session写入数据库

    使用session_set_save_handler()函数,将Session的内容写入数据库 <?php /* *@author Fahy *@link http://home.cnblogs ...

  3. session 存到memcache里

    web服务器的php session都给memcached ,这样你不管分发器把 ip连接分给哪个web服务器都不会有问题了,配置方法很简单,就在php的配置文件内 增加一条语句就可以了,不过前提你需 ...

  4. PHP session 写入数据库中的方法

    首先解释下为什么要把session 写到数据库中呢,session 一般默认是以文件的形式放在php.ini 配置的目录中的, 如果你的网站实现了多台服务器负载均衡,这样用户访问你的网站,可能进入的服 ...

  5. [Yii Framework] Share the session with memcache in Yii

    When developing distributed applications with Yii, naturally, we will face that we have to share the ...

  6. c# Session写入读取操作

    /// <summary> /// 写Session /// </summary> /// <typeparam name="T">Sessio ...

  7. session写入数据库

    <?php class session { private static $handle = null; private static $ip = null; private static $l ...

  8. session之memcache

    nginx服务器配置:192.168.200.111[root@nginx ~]# hostname nginx[root@nginx ~]# bash[root@nginx ~]# vim /usr ...

  9. session或memcache过期之后跳转到登陆页面并跳出iframe框架

    <!--在你想控制跳转的页面,比如login.html中的<head>与</head>之间加入以下代码:--> <script> if (window ...

随机推荐

  1. 8.23.2 IO-输入输出规范代码

    文件路径4种写法: 相对路径,相对当前而言,在当前路径下找: String filePath = "temp01";  绝对路径: String filePath = " ...

  2. sort与qsort的用法,建议使用sort

    做ACM题的时候,排序是一种经常要用到的操作.如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错.STL里面有个sort函数,可以直接对数组排序,复 ...

  3. Tomcat闪退的问题

    问题:双击tomcat bin下的startup.bat,tomcat的窗口一闪而过,未成功启动: 原因是:在启动tomcat是,需要读取环境变量和配置信息,缺少了这些信息就会导致了tomcat的闪退 ...

  4. [2012-08-21]FreeBSD9.0体验记

    最近在看<构建高可用Linux服务器> 由于对FreeBSD的稳定性仰慕已久,正好参照该书的指导进行体验一二. 先感谢下该书作者余大大,同时做个声明:本文中若有命令脚本涉及版权问题,请与p ...

  5. 谈谈.NET,Java,php

    开通博客后,一直都是转点别的朋友写的有意思的博文,今天我来写我在博客园的第一篇文章,说的不对的地方请你指正.希望本文能为一些准备学习编程的朋友有一点帮助. 开发桌面程序一直都是c语言,c++的天下,因 ...

  6. 如何编写更好的SQL查询:终极指南-第三部分

    本次我们学习<如何编写更好的SQL查询>系列的最后一篇文章. 时间复杂度和大O符号 通过前两篇文章,我们已经对查询计划有了一定了解.接下来,我们还可以借助计算复杂度理论,来进一步深入地挖掘 ...

  7. xtream 示例介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt271 1 xStream框架 xStream可以轻易的将Java对象和xml ...

  8. Java 优先队列

    Java PriorityQueue 优先队列是一种重要的数据结构,其利用的是小/大顶堆来实现的. Java中提供了PriorityQueue,PriorityQueue是基于小顶堆实现的无界优先队列 ...

  9. iOS block和代理的区别

      block和代理是iOS开发中实现回调的两种方式,大多数情况下是用哪个都可以,主要看个人喜好.本文主要是对两者做一下对比. 1.block简介   在 iOS中, block一共分三种.   (1 ...

  10. 客户端与服务端,java与Android跨平台服务