最近都在积极尝试Serverless,逐步迁移一些系统;
毕竟自己部署和管理的服务器,总担心哪天出问题。
自己用Docker部署的各个系统,Session都是保存在Redis,
改用阿里云『函数计算』PHP环境、fcPhpCgiProxy方案;
同样保存到Redis就可以了,用法例如:
ini_set("session.save_handler", "redis");
ini_set("session.save_path", "tcp://IP:Port");
今天部署的一个小系统,因为某些原因,要把系统放到一个新的阿里云账号部署,
为了尽量精简,我不愿再弄一个Redis,都用函数计算了,也不能再搞ECS呀,
首先我想到的是保存到公共文件夹,比如挂载了『NAS文件存储』,可以下面这样:
ini_set("session.save_handler", "files");
ini_set("session.save_path", "/mnt/nfs/website/session");
后来我想,这Session,只要找一个可读可写的地方保存就行了,
简单靠谱又成本比较低的,那『对象存储OSS』就挺不错,选它省心。
下面是我为验证这想法而写的Session存储代码:
<?php
require_once __DIR__ . '/aliyun-oss-php-sdk-2.3.1.phar';
use \OSS\OssClient;
class OssSessionHandler{
private $accessKeyId;
private $accessKeySecret;
private $securityToken = NULL;
private $endpoint;
private $bucket;
private $isCName = false;
/**
* @var OssClient
*/
private $oss