传统的 session 是写入到服务器文件中,可以在 php.ini 中看出,清单如下

session.save_handler = files
session.save_path = “sess保存路径”

但是,如果网站用户很多的话,session 的访问将势必影响网站的速度。因为文件的读取速度是很低的。
众所周知,memcache 作为内存缓存服务器,通过哈希算法,把数据以key->value的形式进行读取,其速度是远远高于文件的读取。
将 session 保存到 memcache 服务器的配置如下:
方式一:
打开 php.ini 文件,修改下面两个参数:

session.save_handler = memcache
session.save_path = “tcp://Mem服务器1:端口号,tcp://Mem服务器2:端口号…”

方式二:
在 php 文件中使用 ini_set 函数,进行配置,此方法会解决共享服务器的 php 的配置问题

<?php
….
ini_set(“session.save_handler”, “memcache”);
ini_set(“session.save_path”, “tcp://Mem服务器1:端口号,tcp://Mem服务器2:端口号…”);
….
?>

重启 Web 服务器!
这时,session 将不会以文件的形式保存,而是保存到 Memcache 服务器,保存的 key 为 session_id
telnet 到 memcache 服务器,进行 get 查看
telnet memcache服务器 端口号

在程序中使用 memcache 来作 session 存储
<?php
session_start();
if (!isset($_SESSION[‘TEST’])) {
$_SESSION[‘TEST’] = time();
}

$_SESSION[‘TEST3’] = time();

print $_SESSION[‘TEST’];
print “<br><br>”;
print $_SESSION[‘TEST3’];
print “<br><br>”;
print session_id();
?>

用 sessionid 去 memcached 里查询一下:
<?php
$memcache = memcache_connect(‘localhost’, 11211);
var_dump($memcache->get(‘19216821213c65cedec65b0883238c278eeb573e077’));
$memcache->set(‘aaaa’, ‘hello everyone’);
var_dump($memcache->get(‘aaaa’));
?>

Comments are closed.

Post Navigation