Redis 缓存 PHP 7.2 session 变量共享

admin2周前笔记25

image.png

一般负载均衡内容有两种形式,一种是静态,另一种是动态,动态网站内容就可能需要进行交互,那么就涉及到session共享的问题。默认PHP是将session存储在LocalDisk,如果是多台php主机之间进行负载,那么该如何共享session?今天我们就解决这个问题。

session会话共享文件有很多种方式:

分布式文件共享;NFS,NAS文件存储等。

Nginx负载均衡ip_hash模块,固定访客到后端某台服务器。

将session存储到数据库中;例如MySQL,Memcached,Redis,Mongodb等。

我个人比较倾向于将session存储到Redis数据库,用这种方式来同步session共享,不仅不会加大数据库的负担,而且安全性比cookie更高,把session放到内存里面,比从磁盘文件中读取会快很多。“有人认为;那我把所有的缓存软件都安装,速度岂不是更快,那就不是缓存加速了,而演变成了缓存库了”。

php语言脚本默认不支持对Redis的操作,所以需要安装第三方phpRedis扩展模块,让其支持对Redis的操作,至于如何安装使用phpRedis,可以参考我前面写的文章《phpRedis扩展模块安装配置使用》。此外这里还需要一台Redis服务器,请参阅《Linux Centos7 Redis 3.2.9 源码编译安装配置》。

1.修改PHP配置文件php.ini将session存储到Redis中。

# vim /usr/local/php/etc/php.ini

session.save_handler = files
;session.save_path = "N;/path"
修改为:

session.save_handler = Redis
session.save_path = “tcp://10.10.204.66:6379”

;如果Redis有密码连接方式
session.save_path = “tcp://10.10.204.66:6379?auth=password”

2.重启php-fpm服务生效

# systemctl restart php-fpm

以上所有过程均是经过手工测试的,99%可用于生产。


相关文章

Linux网络配置

Linux网络配置方法简介。配置IP地址# 使用ifconfigifconfig eth0 192.168.1.3 netmask 255.255.2...

为什么说.gitignore不能忽视

为什么说.gitignore不能忽视

什么是 .gitignore?Git 仓库中的文件可以是:未跟踪的:未被暂存或提交的变更。跟踪的:已暂存或提交的变更。忽略的:你让 Git 忽略的文件。有些文件你希望 Git 忽略,不要在你的版本库中...

Mysql数据库“消失”的对象校验

一、前言最近在配合系统开发商进行上线的过程中,遇到了一个问题,从这个问题上,可以看到mysql数据库中虽然尽可能的想要为我们提供一些更加安全、便捷的功能,但是貌似却仍然存在一些不合理之处。环境如下:名...

MySQL利用逻辑备份恢复误删的数据库

前言本篇文章介绍了MySQL数据库中误删库后,使用逻辑备份完全恢复方法的一种方法。此方法的一个前提条件是数据库打开了binlog,在生产环境中强烈建议打开binlog。这相当于数据库的归档,虽然占用了...

JavaScript面向对象轻松入门之综合

需求:几乎所有的web应用都需要保存数据一些到本地,那么我们就来做一个数据储存器吧。详细需求:当本地储存有数据时,取用本地的数据,没有时使用默认的数据判断本地的数据是否过时,如果过时则不使用默认使用l...

eBay为什么选择MongoDB?

eBay为什么选择MongoDB?

 过去,网站可以接受每周维护的预定停机时间。随着当前服务的全球化,用户或业务都不会接受如此频繁的停机!此外,大多数公司现在在商业硬件平台上构建其服务,而不是以前的 Sun Solaris /...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。