作者归档:Simon Whu

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

简介 PHP session支持在服务端缓存用户信息以便随后使用。当在BAE部署环境的实例数大于1时,我们无法通过内存实现分布式session,这是因为环境的多个实例并不共享内存。本文主要基于PHP讨论在BAE专业版上实现分布式session的一种方案。 创建简单缓存服务 百度开放云提供简单缓存服务SCS,支持memcache和redis,因此我们可以利用SCS实现分布式session。BAE专业版的环境实例可以通过内网访问SCS。这里我们以memcache为例,当然也可以使用redis。 注意,需要SCS和BAE部署在百度开放云的同一个区域。我们在“华北-北京“区域创建一个memcache。创建成功后,可以在创建的scs集群详情页获取访问地址和端口号,如下图所示。 通过简单缓存服务实现分布式session 创建一个PHP5.4的应用,并部署一个环境,在”环境详情->设置->关联SCS”中,将该环境和创建的memcache建立关联,BAE会在后台将该环境下所有实例的ip加到该memcache的白名单中。关联的具体操作方法可以参考BAE官方文档环境管理中关联RDS或SCS一节。 我们可以通过修改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是否生效,代码示例如下: <?php session_start(); // 缓存session开始的时间 if (!isset($_SESSION['test'])) { $_SESSION['test'] = time(); } print session_id(); print “<br><br>”; print $_SESSION['test']; print “<br><br>”; print time(); ?> 部署代码成功后,通过浏览器刷新访问页面,我们发现打印的session开始时间在同一个session … 继续阅读

发表在 未分类 | 留下评论

【BAE基础版】在Python Web中增加定时任务运行Python脚本

简介 在BAE Python Web部署中,通过crond定时执行Python脚本时,可能触发定时任务异常。本文主要介绍异常产生原因及解决方案。关于crond使用方法,请参考以下链接: https://bce.baidu.com/doc/BAE/GUIGettingStarted.html#.E9.85.8D.E7.BD.AEapp.conf 异常现象 以Python Web中的mongo操作为例,配置app.conf,定时执行mongo db操作脚本。(脚本来源:Pyhon连接MongoDB) #-*- coding:utf-8 -*- import pymongo from pymongo import MongoClient def test_mongo(): ### 连接MongoDB服务 ### 从管理控制台获取host, port, db_name, api_key, secret_key con = MongoClient(“mongo.duapp.com”, 8908) db_name = “CAoKTghXtKNEGBaLAYRj” # 数据库名称 db = con[db_name] … 继续阅读

发表在 未分类 | 留下评论