在将session存储memcache缓存之前,先说说memcache存储。 一般地, session 是以文本文件形式存储在服务器端的。如果使用 seesion,或者该 PHP 文件要调用 session 变量,那么就必须在调用 session 之前启动它,使用 session_start() 函数。其它都不需要你设置了,PHP 自动完成 session 文件的创建。其默认 session 的存放路径是服务器的系统临时文件夹,可以使用ini_set('session.save_path','路径');来设置session的存放路径。 但是如果碰到大数据量的sesstion的时候,使用基于文件的session存取瓶颈可能都是在磁盘IO操作上,现在利用memcached来保存session数据,直接通过内存的方式,效率自然能够提高不少。在读写速度上会比 files 时快很多,而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。 其缺点是 session 数据都保存在 memory 中,一旦当机,数据将会丢失。但对 session 数据来说并不是严重的问题,其本身就是临时性数据 以下是基本的配置步骤: 1.安装和配置memcache,方法参考百度上的文章,一堆一堆的。 2.修改session配置,有几种方法 (1)如果你能修改到服务器配置文件,那就打开打开php.ini 修改下面两项: session.save_handler = memcache session.save_path = "tcp://127.0.0.1:11211" (2)修改网站根目录下的.htaccess文件 php_value session.save_handler "memcache" php_value session.save_path "tcp://127.0.0.1:11211" (3)最常用的方法 在程序代码中修改 ini_set("session.save_handler", "memcache"); ini_set("session.save_path", "tcp://127.0.0.1:11211"); 注:使用多个 memcached server 时用逗号","隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数"persistent"、"weight"、"timeout"、"retry_interval" 等等,类似这样的:"tcp://host:port?persistent=1&weight=2,tcp://host2:port2" 3.测试 (1)建立一个php页面a.php 然后创建一个session <?php ini_set("session.save_handler", "memcache"); ini_set("session.save_path", "tcp://127.0.0.1:11211"); session_start(); $_SESSION['test'] = 'Thisvalue'; $sid = session_id(); echo '<a href="b.php?sid='.$sid.'">next page</a>'; ?> (2)建立一个php页面b.php,然后在memcache里查询session并输出 <?php $mem = new Memcache; $mem->connect('127.0.0.1',11211); if($_REQUEST['sid']){ $sess_value = $mem->get($_REQUEST['sid']); echo $sess_value; }else{ echo '缺少参数!'; } ?> 访问a.php页面,点击链接后如果输出test|s:9:"Thisvalue"; 表示session已经成功写入memcache!!! (责任编辑:IT) |