session写入memcache
1 <?php
2 class MemSession{
3 private static $handler = null;
4 private static $lifetime = null;
5 private static $time = null;
6 const MS = 'session';
7
8 private static function init($handler){
9 self::$handler = $handler;
10 self::$lifetime = ini_get('session.gc_maxlifetime');
11 self::$time = time();
12 }
13
14 public static function start($memcache){
15 self::init($memcache);
16 //调用类中的方法要用数组,__CLASS__代表本类
17 session_set_save_handler(
18 array(__CLASS__,'open'),
19 array(__CLASS__,'close'),
20 array(__CLASS__,'read'),
21 array(__CLASS__,'write'),
22 array(__CLASS__,'destroy'),
23 array(__CLASS__,'gc')
24 );
25 session_start();
26 }
27
28 public static function open($path,$name){
29
30 }
31 public static function close(){
32
33 }
34
35 public static function read($PHPSESSID){
36 $val = self::$handler->get(self::session_key($PHPSESSID));
37
38 if($val===false || $val==null){
39 return false;
40 }
41 return $val;
42 }
43 public static function write($PHPSESSID,$data){
44 $method = $data? 'set':'replace';
45 return self::$handler->$method(self::session_key($PHPSESSID),$data,MEMCACHE_COMPRESSED,self::$lifetime);
46 }
47
48 public static function destroy($PHPSESSID){
49 return self::$handle->delete(self::session_key($PHPSESSID));
50 }
51 //memcache本身就有限定时间,数据自动销毁,所以可不使用gc方法
52 public static function gc($lifetime){
53 return true;
54 }
55
56 //给sessionID加前缀,避免key重复
57 private static function session_key($PHPSESSID){
58 $session_key = self::MS.$PHPSESSID;
59 return $session_key;
60 }
61 }
62 $mem = new Memcache;
63 $mem->connect("localhost",11211) or die("could not connect");
64 MemSession::start($mem);
session写入memcache的更多相关文章
- 将Session写入Memcache
通过session_set_save_handler()方法自定义Session写入Memcache <?php class MemSession{ private static $handle ...
- 将Session写入数据库
使用session_set_save_handler()函数,将Session的内容写入数据库 <?php /* *@author Fahy *@link http://home.cnblogs ...
- session 存到memcache里
web服务器的php session都给memcached ,这样你不管分发器把 ip连接分给哪个web服务器都不会有问题了,配置方法很简单,就在php的配置文件内 增加一条语句就可以了,不过前提你需 ...
- PHP session 写入数据库中的方法
首先解释下为什么要把session 写到数据库中呢,session 一般默认是以文件的形式放在php.ini 配置的目录中的, 如果你的网站实现了多台服务器负载均衡,这样用户访问你的网站,可能进入的服 ...
- [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 ...
- c# Session写入读取操作
/// <summary> /// 写Session /// </summary> /// <typeparam name="T">Sessio ...
- session写入数据库
<?php class session { private static $handle = null; private static $ip = null; private static $l ...
- session之memcache
nginx服务器配置:192.168.200.111[root@nginx ~]# hostname nginx[root@nginx ~]# bash[root@nginx ~]# vim /usr ...
- session或memcache过期之后跳转到登陆页面并跳出iframe框架
<!--在你想控制跳转的页面,比如login.html中的<head>与</head>之间加入以下代码:--> <script> if (window ...
随机推荐
- Java架构师系统培训高并发分布式电商实战activemq,netty,nginx,redis dubbo shiro jvm虚拟机视频教程下载
15套java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战视频教程 ...
- Android binder机制---概述
1.进程间通讯的原因 目前操作系统都使用虚拟存储技术,管理内存. 假设是32位机器,0-3G是用户空间,3-4G是系统使用.虚拟内存和逻辑内存都按4K分页.这样虚拟内存和逻辑内存就存在对应关系. 一个 ...
- SVN的branch合并到trunk的过程思考
SVN branch合并到主线的整个过程相对来说还是比较繁琐的,下面一个图揭示了一个大概的过程: 1. 将branch上的代码update到本地. 2.将 trunk上的代码也update到本地. 3 ...
- 服务端性能测试 TPS
针对服务器端的性能,以TPS为主来衡量系统的性能,并发用户数为辅来衡量系统的性能,如果必须要用并发用户数来衡量的话,需要一个前提,那就是交易在多长时间内完成,因为在系统负载不高的情况下,将思考时间( ...
- Servlet之文件的上传与下载
文件上传和文件下载是我们学JAVA Web时必不可少的模块.今天我们探讨下这个问题 文件上传: request.setCharacterEncoding("utf-8");//设置 ...
- Thread类源码剖析
目录 1.引子 2.JVM线程状态 3.Thread常用方法 4.拓展点 一.引子 说来也有些汗颜,搞了几年java,忽然发现竟然没拜读过java.lang.Thread类源码,这次特地拿出来晒一晒. ...
- JavaScript实现省市联动
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- JAVA实用案例之图片水印开发
写在最前面 上周零零碎碎花了一周的时间研究水印的开发,现在终于写了个入门级的Demo,做下笔记同时分享出来供大家参考. Demo是在我上次写的 JAVA实用案例之文件导入导出(POI方式) 框架基础上 ...
- Freemarker的使用方法
1. Freemarker概念 1.1 什么是freemarker FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出.FreeMarker与Web容器无关,即在Web运 ...
- java常见面试题(二)
1.java集合类 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).JavaSDK不提供直接继承自Collect ...