【问题标题】:Symfony Session values get lost on specific serverSymfony 会话值在特定服务器上丢失
【发布时间】:2012-09-04 02:29:53
【问题描述】:

总结: 在 PHP Symfony 1.4.8 上开发的应用程序会随机丢失 symfony 会话值,但仅限于特定的生产环境:array symfony/user/sfUser/attributes 在用户身份验证后几秒或几分钟内变空。开发机器或任何其他生产环境都不会出现问题。

问题似乎很明显是故障服务器特有的,但是,我想知道是否有任何我可能遗漏的 PHP / Apache / Symfony 配置可以解决故障服务器上的问题?

失败的服务器 PHP 信息:

  • PHP 版本 5.3.10
  • 系统 SunOS 5.10
  • Apache/1.3.41 (Unix) PHP/5.3.10 mod_ssl/2.8.31 OpenSSL/0.9.8p
  • 每个孩子的最大请求数:0 - 保持活动状态:开启 - 每个连接的最大请求数:100
  • 超时连接:300 - Keep-Alive:15
  • 会话支持:启用
  • 注册的保存处理程序:文件用户 sqlite
  • 注册的序列化程序处理程序:php php_binary
  • session.cache_expire:180
  • session.cache_limiter:无缓存
  • session.cookie_lifetime:0
  • session.gc_divisor:100
  • session.gc_maxlifetime:1440
  • session.gc_probability:1
  • session.use_cookies:开启
  • session.use_only_cookies:开启

工作服务器 PHP 信息:

  • PHP 版本 5.2.17
  • 系统 Linux 2.6.32.59-sg2 #3 SMP
  • Apache/1.3.42 (Unix) mod_gzip/1.3.26.1a mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_ssl/2.8.31 OpenSSL/0.9.8e-fips-rhel5
  • 会话支持:启用
  • 注册的保存处理程序:文件用户 sqlite memcache
  • 注册的序列化程序处理程序:php php_binary wddx
  • session.cache_expire:180
  • session.cache_limiter:无缓存
  • session.cookie_lifetime:0
  • session.gc_divisor:1000
  • session.gc_maxlifetime:1440
  • session.gc_probability:1
  • session.use_cookies:开启
  • session.use_only_cookies:关闭

所有环境下两台服务器的 Symfony 会话设置:

  storage:
    class: sfSessionStorage
    param:
      session_name: webapp

  user:
    class: myUser
    param:
      timeout: 7200

我已经检查过这个类似的问题Symfony 1.4 sessions randomly lost,但是我没有使用 sfMemcacheCache 类。

如果您可能需要任何额外信息来回答这个问题,请告诉我。

【问题讨论】:

  • 您是否尝试过使用不同的存储类?以 sfPDOSessionStorage 为例
  • 我们有同样的问题 - 但我们还没有定义 sfSessionStorage。
  • @j0k 不,我没有...会尝试并让您发布...
  • 生产服务器只有一台,不是几台?
  • 涉及到某种类型的平衡负载,所以我假设它可能不止一个......

标签: php symfony-1.4 session-timeout


【解决方案1】:

这可能是显而易见的检查,但可能是服务器磁盘空间不足?

默认会话存储是基于文件的,因此如果您随机丢失数据,听起来您遇到了一些硬盘驱动器/文件系统问题。

如果您仍然好奇,可以尝试changing the location where sessions are stored to another location,希望在不同的磁盘上。

【讨论】:

    【解决方案2】:

    您可能需要在factories.yml 文件中将以下设置设置为:

      storage:
        class: sfSessionStorage
        param:
          session_name: webapp
          session_cookie_lifetime: 2678400 # number of seconds for 1 month
    

    & 然后删除您的 cache 并重新加载网站,您的 SESSION COOKIE 将保持活跃 1 个月。

    【讨论】:

      猜你喜欢
      • 2017-04-19
      • 1970-01-01
      • 2012-10-27
      • 2013-01-05
      • 2010-09-24
      • 2016-03-28
      • 2012-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多