Laravel 默认用文件保存 session ,默认的保存目录是 storage/framework/sessions 。
如果做负载均衡,需要多台服务器共享同一个 session,否则被分配到其它服务器上的用户将会需要重新登录,这时候需要使用 Redis 作为 session 的存储引擎,如何将现有的文件 session 内容导入到 Redis 中去呢?
分析一下 Laravel 在 Redis 存储的方式:
key是“laravel:”加上sessionid,value是序列化的字符串。
于是用一小段python代码将其导入到 Redis:
import redis
import os
import sys
path = 'session文件所在目录'
host = '127.0.0.1'
port = 6379
r = redis.Redis(host=host, port=port)
files = os.listdir(path)
for filename in files:
content = open(path + filename).read()
content = 's:%d:"%s";' % (len(content), content)
r.set('laravel:' + filename, content)
print r.get('laravel:' + filename)
搞定,收工。