php里改写session到memcache里,并兑现跨顶级域名的限制(应用单例模式)
php里改写session到memcache里,并实现跨顶级域名的限制(应用单例模式)
这两天研究php跨顶级域名问题:终于做了一个勉强(说是勉强,是因为生成$_COOKIE["mzlid"]的值的方法不是完美的)的方案.
首先说一下思路:
session要实现跨顶级域名问题,得解决,程序能识别每一位用户,
在单个域名的时候,是通过sessionid来实现的,sessionid的值的生成原理,是根据客户端的IP,还有其它值,加上时间值,加上随机数,再通过一定规则,最后生成出来并保存在cookie里的。每次请求页面,都把这个值带入header里,这样服务器上的php页面就能识别出不同的用户了。
要跨域,那么这个Id值在访问几个顶级域名产生的值要保持一样。
在这里我的作法是:根据客户的IP,客户的一些其它环境值,生成一个值,并把它存入一个cookie里,那么当客人访问A网站的时间,这个值,生成了,接下来第一次B网站时,这个值没有,如果没有就根据前面的生成规则再生成一次。
那么两个网站在读取$_COOKIE["mzlid"]这个值时,同一个客户,得到的值就是一样的。
接下来我们把它存到memcache里,键名就以这个值为名,内容,以json化数据的形式存进去。
以后这个客人的session的值要增加,修改,删除,都去memcache里查以$_COOKIE["mzlid"]为键名的值,再把它json出来。就OK了。
跨多服务器特点就是利用memcache的集群功能实现.
下面是php操作memcache的session类。
只是省略了$_COOKIE["mzlid"]的生成。
<?php /** * 自定义的session方式,功能是把需要写成session的值存入memcache里,应用单例模式 * by jroam http://www.10np.com * * 用法: * $mss=MySession:init(); $mss->set("host","http://www.10np.com"); $mss->close(); */ class MySession{ public $memcache; public $seid; private static $instance;//存放实例化对像, private function __construct() { global $SYS_config; $this->memcache = memcache_connect($SYS_config["memcachedIP"], $SYS_config["memcacheddk"]); } //初始化 function init(){ if (!isset(self::$instance)) { $c = __CLASS__; self::$instance = new $c; } return self::$instance; } /** * k值 sessionk值 * $v 内容值 */ function set($k,$v){ $this->seid=($_COOKIE["mzlid"]); if($this->seid=="")return "无"; //获取已经存在的值 $a=memcache_get($this->memcache,$this->seid); if($a) $arr=json_decode($a,true); $arr[$k]=$v; $a=json_encode($arr); $f=memcache_set($this->memcache,$this->seid,$a,MEMCACHE_COMPRESSED,36000); } /** * k值 sessionk值 * $v 内容值 */ function get($k,$v){ $this->seid=($_COOKIE["mzlid"]); if($this->seid=="") return "元"; $a=memcache_get($this->memcache,$this->seid); $arr=json_decode($a,true); return ($arr[$k])?$arr[$k]:""; } /** * 删除一个值 * 如果$k值为空时,删除这个用户所有的session值 */ function del($k){ $this->seid=($_COOKIE["mzlid"]); if($this->seid=="") return ""; if($k==""){ memcache_delete($this->memcache,$this->seid); return; } $a=memcache_get($this->memcache,$this->seid); $arr=json_decode($a,true); unset($arr[$k]); memcache_set($this->memcache,$this->seid,json_encode($arr),MEMCACHE_COMPRESSED,36000); } /** * 关闭memcache的连接 */ function close(){ memcache_close($this->memcache); } // 阻止用户复制对象实例 public function __clone() { trigger_error('请不要复制对像.', E_USER_ERROR); } } ?>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在Web开发中,我们经常需要使用缓存技术来提高网站的性能和响应速度。Memcache是一种流行的缓存技术,它可以缓存任何数据类型、支持高并发和高可用性。本文将介绍如何使用PHP开发中的Memcache,并提供具体代码示例。一、安装Memcache要使用Memcache,我们首先需要在服务器上安装Memcache扩展。在CentOS操作系统中,可以使用以下命令

在PHP开发中,使用Memcache缓存系统可以大大提高数据读写的效率。Memcache是一种基于内存的缓存系统,它可以将数据缓存在内存中,避免频繁的读写数据库。本文将介绍如何在PHP中使用Memcache进行高效的数据读写操作,并提供具体的代码示例。一、安装和配置Memcache首先,需要在服务器上安装Memcache扩展。可以通过

PHP开发中如何使用Memcache进行高效的数据写入和查询?随着互联网应用的不断发展,对于系统性能的要求越来越高。在PHP开发中,为了提高系统的性能和响应速度,我们经常会使用各种缓存技术。而其中一个常用的缓存技术就是Memcache。Memcache是一种高性能的分布式内存对象缓存系统,可以用来缓存数据库查询结果、页面片段、会话数据等。通过将数据存储在内存

Memcache缓存技术在PHP中优化数据交互的实践和思考在现代的Web应用中,数据交互是一个非常重要的问题,它没有足够的高效性,将会限制Web应用程序的扩展性和性能。为了加快数据交互速度,我们通常的做法是优化数据库的设计、提高硬件的性能和增加服务器容量。但是,这些方法都有一个共同的限制:它们会增加系统的成本。最近几年,Memcache技术在解决这个问题上提

随着互联网的飞速发展,越来越多的应用程序需要面对大量的并发请求,如何提高应用的并发处理能力成为开发者们需要解决的问题。其中,利用Memcache缓存技术进行并发优化成为了相对较为流行的一种方案。Memcache是一种高效的缓存技术,适用于大型Web应用程序、数据库和分布式系统。其特点是将数据存储于内存中,以实现高速读写操作。在Web应用程序的数据访问过程中,

Memcache是一种开源的、分布式的缓存技术。它通过将数据存储在内存中,极大地提高了数据的访问速度,从而提升了网站的性能和响应速度。在PHP项目中,Memcache缓存技术也被广泛应用,并且取得了很好的效果。本篇文章将深入探讨Memcache缓存技术在PHP项目中的应用和实践。一、Memcache的原理和优势Memcache是一种内存缓存技术,它可以将数据

随着Web应用程序的日益复杂,性能也成为了一个关键问题。在许多应用程序中,数据库查询是最耗费时间的操作之一。为了避免频繁地从数据库中读取数据,可以使用一个缓存系统,将经常读取的数据存储在内存中,以便快速的访问。在PHP开发中,使用Memcached进行分布式缓存是一个极为常见的做法,在本文中我们将介绍如何使用Memcached进行分布式缓存。什么是Memca

如何使用Memcache优化你的PHP应用中的数据存储操作?在Web应用开发中,数据存储是一个至关重要的环节。而在PHP应用中,Memcache作为一种内存缓存系统,可以有效地提升数据存储和读取操作的效率。本文将介绍如何使用Memcache优化PHP应用中的数据存储操作,并附上具体的代码示例。第一步:安装Memcache扩展首先,你需要在PHP环境中安装Me
