`
兰迪RANDY
  • 浏览: 97687 次
文章分类
社区版块
存档分类
最新评论

PHP的session存储对PHP运行环境的影响

阅读更多
这个问题的引入是由于公司一个项目里需要使用单点登录的功能,为了方便起见,就使用redis来替换php默认的文件存储session,当然这里使用memcache或者mysql等也都是一样的,实施起来非常简单,只需要改php.ini里的两处配置即可:
session.save_handler = redis
session.save_path = "tcp://host1:6379?weight=1, tcp://host2:6379?weight=2&timeout=2.5, tcp://host3:6379?weight=2"
具体可参考该文章:
https://github.com/nicolasff/phpredis

正常情况下没有任何问题,而当配置的redis服务器都宕机的时候,php运行环境也会直接挂掉,如果display_error=On的话,就会看到如下错误:
Fatal error: Exception thrown without a stack frame in Unknown on line 0
如果是生产环境没开启错误提示的话,就是一个空白页面。
由于该Fatal Error也没有非常明确的错误定位信息,所以我也是费了半个多小时的功夫才定位错误,原因就是上面提到的redis服务器挂了。

当然这里解决方案是有的,比如多做几台redis主从,通过类似于上面的配置,只要有一台在工作,就不会造成整个php环境的崩溃,或者不是在php.ini里直接修改这个配置,在程序里使用ini_set来设置,设置之前ping一下服务是否正常,不正常的话启用一个别的什么备用方案。

最后,我想说的是,php对于session存储的依赖度很高,一旦session存储介质出现异常(比如存储服务宕机、文件系统磁盘满了等),整个和php相关的代码都会挂起,所以吃一堑长一智吧
0
0
分享到:
评论
1 楼 fyland 2012-10-24  
redis宕机的原因是什么?

相关推荐

    PHP自定义session存储(mysql数据库)

    里边有详细代码,包含SQL脚本,...//设置用户自定义Session存储 session_set_save_handler('mysession_open', 'mysession_close', 'mysession_read', 'mysession_write', 'mysession_destroy', 'mysession_gc'); ?>

    php的内存session方案

    基于内存的session系统,可替代默认的基于小文件的session,基于内存存储,可设置独立的session服务器,以使多个web服务器共用同一session空间,则效率比使用数据库的session高很多。

    php mysql数据库 存储session

    NULL 博文链接:https://melec.iteye.com/blog/851649

    php Session存储到Redis的方法

    的设置复制代码 代码如下:session.save_handler = redissession.save_path = “tcp://127.0.0.1:6379″修改后重启php-fpm或nginx,phpinfo() session redis如果不想修改php.ini可这样复制代码 代码如下:ini_set(...

    PHP中如何使用session实现保存用户登录信息

    主要给大家介绍在php中是如何使用session实现保存用户登录信息的,涉及到php session 用户登录等一些知识点,使用session保存用户登录信息要比cookie安全很多。感兴趣的朋友一起学习吧

    session方式实现的php购物车类.zip

    $session_id 是 session_id,默认是使用 cookie 来传输,也可以自定义,如果存储类型是 session 才起效 $savetype 存储类型,有 session 和 cookie 方式 ... 其他是 cookie 需要的参数 当程序本身用到...

    关于PHP session 存储方式的详细介绍

    下面介绍一种基于Mysql数据库的session存储方式.首先要进行的配置如下:1>php.ini中将session.save_handler = files 中的files改为User,其他默认即可,重启Apache(好像没改也行啊)2>本实例创建的数据库名叫php, ...

    php连接redis存储session

    php连接redis存储session 之前一直用memcached存储session,今天想改用redis存储session试试。网上提供了很多方法,简单的复杂的,限于本人水平有限,没有一个可以按着配置成功。于是自己简单的配置了一下,亲测有效...

    php实现Session存储到Redis

    主要介绍了php实现Session存储到Redis的方法,php Session可以保存到文本或者内存、还有数据库,本文讲的是存到Redis的方法,

    微信小程序实现Session功能及无法获取session问题的解决方法

    大概思路就是借助小程序本地储存+网络请求的header可读可写来实现类似浏览器的cookies保存session功能。 直接上代码 function NetRequest({url, data, success, fail, complete, method = POST, header = { '...

    php+redis实现多台服务器内网存储session并读取示例

    主要介绍了php+redis实现多台服务器内网存储session并读取示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    php独立session数据库存储操作类分享_.docx

    php独立session数据库存储操作类分享_.docx

    php数据库储存回话

    php的mysql存储session功能实现

    PHP实现高度自定义的微信机器人

    环境要求 PHP >= 7.0 PHP fileinfo 拓展 储存文件需要用到 PHP gd 拓展 控制台显示二维码 PHP posix 拓展 控制台显示二维码(linux) PHP 系统命令 拓展 执行clear命令 PHP SimpleXML 拓展 解析XML 安装 请确保已经...

    PHP session有效期session.gc_maxlifetime

    一个已知管用的方法是,使用session_set_save_handler,接管所有的session管理工作,一般是把session信息存储到数据库,这样可以通过SQL语句来删除所有过期的session,精确地控制session的有效期。这也是基于PHP的...

    实现PHP中session存储及删除变量

    在本篇文章中我们给大家分享了PHP中session如何存储及删除变量的相关知识点内容,有兴趣的朋友们参考下。

    优化使用mysql存储session的php代码

    之前写过两篇文章《自定义SESSION(二)——数据库保存》和《我为什么不... 3、用户的对session的操作都尽量保证在一条sql语句完成。不用到session的时候,绝对不多一条查询。 4、为了效率起见,session的回收没有集成

    PHP实现提高SESSION响应速度的几种方法详解

    不过这种方式对速度的提升一般不是很明显,可以通过修改php.ini,进而修改session存储目录数。 session.save_path = 2;/tmp 将SESSION存储到redis中 php中的session默认是存储在文件中的,支持redis存储方式,因为...

    PHP中的Session对象如何使用

    在PHP开发中对比起Cookie,session 是存储在服务器端的会话,相对安全,并且不像 Cookie 那样有存储长度限制。下面则是对Session的介绍。 php中的Session与Cookie 在PHP开发中对比起Cookie,session 是存储在服务器...

Global site tag (gtag.js) - Google Analytics