热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php分布式session登陆,【BAE专业版】如何让你的PHP服务支持分布式session

简介PHPsession支持在服务端缓存用户信息以便随后使用。当在BAE部署环境的实例数大于1时,我们无法通过内存实现分布式session,这是因为环境

简介

PHP session支持在服务端缓存用户信息以便随后使用。当在BAE部署环境的实例数大于1时,我们无法通过内存实现分布式session,这是因为环境的多个实例并不共享内存。本文主要基于PHP讨论在BAE专业版上实现分布式session的一种方案。

创建简单缓存服务

百度开放云提供简单缓存服务SCS,支持memcache和redis,因此我们可以利用SCS实现分布式session。BAE专业版的环境实例可以通过内网访问SCS。这里我们以memcache为例,当然也可以使用redis。

51764ae01d4b008313490884129bc650.png

注意,需要SCS和BAE部署在百度开放云的同一个区域。我们在“华北-北京“区域创建一个memcache。创建成功后,可以在创建的scs集群详情页获取访问地址和端口号,如下图所示。

c8b2e2525b4903ae8c72bd53dd471da9.png

通过简单缓存服务实现分布式session

创建一个PHP5.4的应用,并部署一个环境,在”环境详情->设置->关联SCS”中,将该环境和创建的memcache建立关联,BAE会在后台将该环境下所有实例的ip加到该memcache的白名单中。关联的具体操作方法可以参考BAE官方文档环境管理中关联RDS或SCS一节。

10b0cc4a515ad630e9cadc5e69ea3481.png

我们可以通过修改php.ini配置memcache保存session。php.ini的修改方法请参考BAE官方文档php高级配置中的自定义php.ini。在应用根目录下增加一个php.ini文件,将mamcache的配置写入到该文件。

session.save_handler = memcache

session.save_path = "tcp://memcache.utmppnqy.scs.bj.baidubce.com:11211"

验证配置结果

我们通过修改index.php文件测试,验证分布式session是否生效,代码示例如下:

session_start();

// 缓存session开始的时间

if (!isset($_SESSION['test'])) {

$_SESSION['test'] = time();

}

print session_id();

print "
";

print $_SESSION['test'];

print "
";

print time();

?>

部署代码成功后,通过浏览器刷新访问页面,我们发现打印的session开始时间在同一个session id下面保持不变,即分布式session生效。



推荐阅读
author-avatar
_妃妃教主
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有