zoukankan      html  css  js  c++  java
  • PHP的session存储对PHP运行环境的影响

    转于:http://hmw.iteye.com/blog/1704020

    这个问题的引入是由于公司一个项目里需要使用单点登录的功能,为了方便起见,就使用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相关的代码都会挂起,所以吃一堑长一智吧

  • 相关阅读:
    flash
    Python
    ArchLinux2012.12后续软件安装
    archlinux win7+ubuntu双系统引导问题
    转盘项目
    Archlinux121210+kde4.95声音输出解决
    作为程序员为什么一直都很努力,却没有进步?
    打造属于自己的谷歌地图版博客公告【演示+源码】
    人类已经不能阻止开源了Web 2.0开源应用大汇总
    LAMP网站架构方案分析【精辟转】
  • 原文地址:https://www.cnblogs.com/Alight/p/3531932.html
Copyright © 2011-2022 走看看