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

本文介绍了在BAE(百度应用引擎)专业版环境中,由于实例间不共享内存,如何通过简单缓存服务(SCS)实现PHP的分布式session。具体步骤包括使用百度开放云的SCS(支持memcache或redis),创建memcache服务,将环境与SCS关联,修改php.ini配置以使用memcache保存session,并验证配置是否生效。通过这种方式,实现了跨实例的session共享。
摘要由CSDN通过智能技术生成

简介

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生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值