当前位置: 首页 > 编程笔记 >

在php中设置session用memcache来存储的方法总结

田英卓
2023-03-14
本文向大家介绍在php中设置session用memcache来存储的方法总结,包括了在php中设置session用memcache来存储的方法总结的使用技巧和注意事项,需要的朋友参考一下

memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端。一个完全独立的memcached实例将会在内部使用,因此如果需要您可以设置一个不同的服务器池。session的key被存储在前缀memc.sess.key.之下,因此, 如果你对session和通常的缓存使用了同样的服务器池,请注意这一点。译注:另外一个session和通常缓存分离的原因是当通常的缓存占满了memcached服务端后,可能会导致你的session被从缓存中踢除,导致用户莫名的掉线。

session.save_handler string

设置为memcached开启memcached的session处理器。

session.save_path string

定义一个逗号分隔的hostname:port样式的session缓存服务器池,例如: "sess1:11211, sess2:11211".

方法I: 在 php.ini 中全局设置

session.save_handler = memcache 
session.save_path = "tcp://127.0.0.1:11211" 

方法II: 某个目录下的 .htaccess

php_value session.save_handler "memcache" 
php_value session.save_path "tcp://127.0.0.1:11211" 

方法III: 再或者在某个一个应用中

ini_set("session.save_handler", "memcache"); 
ini_set("session.save_path", "tcp://...:"); 

使用多个 memcached server 时用逗号","隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数"persistent"、"weight"、"timeout"、"retry_interval" 等等,类似这样的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。

如果安装的PECL是memcached(依赖libmemcached库的那个扩展),则配置应为

ini_set("session.save_handler", "memcached"); // 是memcached不是memcache 
ini_set("session.save_path", "127.0.0.1:11211"); // 不要tcp:[/b]

代码例子(不依赖libmemcached库的那个)

<?php 
session_start(); 
if (!isset($_SESSION['TEST'])) { 
$_SESSION['TEST'] = time(); 
} 
$_SESSION['TEST'] = time(); 
print $_SESSION['TEST']; 
print "<br><br>"; 
print $_SESSION['TEST']; 
print "<br><br>"; 
print session_id(); 
?> 

用 sessionid 去 memcached 里查询一下:

<?php 
$memcache = memcache_connect('localhost', ); 
var_dump($memcache->get('ccedecbceebe')); 
$memcache->set('aaaa', 'hello everyone'); 
var_dump($memcache->get('aaaa')); 
?>

会看到

string(37) "TEST|i:1177556731;TEST3|i:1177556881;"

这样的输出,证明 session 正常工作。

下面通过两种用法实例给大家介绍下php中使用memcached来存储session

一、

ini_set("session.save_handler", "memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");

多个memcached

ini_set("session.save_path","tcp://127.0.0.1:11211,tcp://127.0.0.1:11211");

二、

ini_set("session.save_handler", "memcached");
ini_set("session.save_path","...:");

多个memcached

ini_set("session.save_path","127.0.0.1:11211,127.0.0.1:11211");
 类似资料:
  • 本文向大家介绍Zend Framework实现将session存储在memcache中的方法,包括了Zend Framework实现将session存储在memcache中的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Zend Framework实现将session存储在memcache中的方法。分享给大家供大家参考,具体如下: 在zend framework中,已经可以将sess

  • 本文向大家介绍PHP使用Redis替代文件存储Session的方法,包括了PHP使用Redis替代文件存储Session的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP使用Redis替代文件存储Session的方法。分享给大家供大家参考,具体如下: PHP默认使用文件存储session,如果并发量大,效率非常低。而Redis对高并发的支持非常好,所以,可以使用redis替代文件

  • 问题内容: 为自定义PHP应用程序存储一组全局设置的最佳方法是什么?我正在做一个个人项目(实际上是第一个主要项目),并且需要一种存储键值对的方法来记录应用程序的整体设置。 东西存储为… 网站的全球名称。 主题(只是一个变量或主题的路径) 等等 我应该把它们放在一张桌子里吗?如果是这样,从boostrap查询它们的最佳方法是什么?除了对每个所需的设置执行单个查询。 更新:是的.ini或解析一个包含文

  • memcache 形式的 SESSION 设置、开启、操作 php 扩展 需要开启 php_memcache 扩展 memcache 相关知识: http://www.hcoder.net/books/read_10090.html 在入口页面( index.php )设置并开启 session <?php define('PG_SESSION_TYPE', 'memcache'); //类型为

  • 本文向大家介绍Redis保存PHP Session方法,包括了Redis保存PHP Session方法的使用技巧和注意事项,需要的朋友参考一下 PHP默认就支持保存session到redis,不需任何额外代码。 Redis保存session用的命令是setex,用redis-cli monitor实时监测可以检测到。 setex命令的语法: 其中,key是键值,time是过期时间,value是字符

  • 本文向大家介绍ThinkPHP3.2.3框架Memcache缓存使用方法实例总结,包括了ThinkPHP3.2.3框架Memcache缓存使用方法实例总结的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ThinkPHP3.2.3框架Memcache缓存使用方法。分享给大家供大家参考,具体如下: 前面一篇文章讲述了Linux下安装Memcached服务器和客户端,这里来总结一下ThinkPH

  • 本文向大家介绍Java设置session超时的几种方式总结,包括了Java设置session超时的几种方式总结的使用技巧和注意事项,需要的朋友参考一下 Java设置session超时的几种方式总结 1.      在web容器中设置(此处以tomcat为例) 在tomcat-5.0.28\conf\web.xml中设置,以下是tomcat 5.0中的默认配置: Tomcat默认session超时时

  • 本文向大家介绍php中实现精确设置session过期时间的方法,包括了php中实现精确设置session过期时间的方法的使用技巧和注意事项,需要的朋友参考一下 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下session过期时间。 对此,可以在PHP中,设置php.ini,找到session.gc_maxlifetime = 144