多服务器session共享之memcache共享安装和实现篇(apache+php-windows)

简介:

原理是:直接用 memcache 来作 PHP 的 session.save_handler。

1. 安装 memcached

2. 将 php.ini 中extension=memcache.dll 打开,重启一下 apache,查看 phpinfo 中session配置里的 "Registered save handlers" 会有 "files user memcache" 这3个可用。

如下图所示

 

3. 修改配置文件,在 php.ini 中全局设置:
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"

附:
或者某个目录下的 .htaccess : php_value session.save_handler "memcache"
php_value session.save_path  "tcp://127.0.0.1:11211″
再或者在某个一个应用中: 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://host1:port1?persistent=1&weight=2,tcp://host2:port2″ 。

4.重新启动apache.

5. 重新启动 memcached:在 控制面板-管理工具-服务 找到memcached server项,然后重新启动

重启完以后查看php的phpinfo函数 中session配置里的session.save_handler和session.save_path,如果是如下图设置说明你配置成功了。

 

6. 在程序中使用 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();
?>

输出结果是:

1236574424

1236575630

gqptpkeogdegjq01f5o14n9as5

7. 用 sessionid 去 memcached 里查询一下:
<?php
$memcache = new Memcache();
$memcache->connect('127.0.0.1', '11211');
var_dump($memcache->get(‘ gqptpkeogdegjq01f5o14n9as5'));
?>

输出结果是:

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

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

注意:上面的$memcache->get里的值是第6步里的session_id()的值。

总结:
      用 memcache 来存储 session 在读写速度上会比 files 时快很多,而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。





本文转自 fenghao.cn 51CTO博客,原文链接:http://blog.51cto.com/linuxguest/424175,如需转载请自行联系原作者
目录
相关文章
|
2天前
|
PHP Android开发
android通过http上传文件,服务器端用php写(原创)
android通过http上传文件,服务器端用php写(原创)
14 4
|
1天前
|
Linux Apache
Centos7 安装Apache
安装Apache的步骤
16 6
|
2天前
|
NoSQL 关系型数据库 MySQL
涉及rocketMQ,jemeter等性能测试服务器的安装记录
涉及rocketMQ,jemeter等性能测试服务器的安装记录
12 1
|
2天前
|
JSON 应用服务中间件 Linux
skywalking内部测试服务器安装记录
skywalking内部测试服务器安装记录
|
3天前
|
运维 监控 安全
2023年最详细的:本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录
2023年最详细的:本地Linux服务器安装宝塔面板,并内网穿透实现公网远程登录
|
5天前
|
缓存 安全 网络安全
Apache服务器配置与优化指南
【5月更文挑战第7天】Apache服务器配置与优化指南包括基础配置和性能优化。安装Apache后,编辑`httpd.conf`配置文件,设置`ServerRoot`、`Listen`、`ServerName`和`DocumentRoot`。启用虚拟主机以托管多个网站。性能优化涉及启用MPM模块(如worker或event),启用压缩功能,优化KeepAlive参数,配置缓存和限制并发连接数。安全配置包括禁用不必要的模块,设置目录权限,启用SSL/TLS及限制IP访问。通过这些措施,提升服务器性能和安全性。
|
5天前
|
安全 Linux 网络安全
Linux _ apache服务器部署 不同域名—访问不同网站(多网站)
Linux _ apache服务器部署 不同域名—访问不同网站(多网站)
|
10天前
|
Apache 项目管理 数据安全/隐私保护
Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器
Windows安装TortoiseSVN客户端结合Cpolar实现公网提交文件到本地服务器
|
12天前
|
Shell 数据安全/隐私保护 Docker
如何使用Docker安装FTP服务器?
【4月更文挑战第25天】
24 0
如何使用Docker安装FTP服务器?
|
12天前
|
弹性计算 Shell Apache
一键安装apache脚本
【4月更文挑战第30天】
18 1

推荐镜像

更多