3

摘要:在 PHP Symfony 1.4.8 上开发的应用程序会随机丢失 symfony 会话值,但仅在特定的生产环境中:数组 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 - 保持活动: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 random lost,但是我没有使用 sfMemcacheCache 类。

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

4

2 回答 2

0

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

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

如果您仍然好奇,可以尝试将会话存储的位置更改为另一个位置,希望在不同的磁盘上。

于 2012-11-27T16:28:11.840 回答
0

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

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

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

于 2017-07-17T11:23:04.160 回答