【问题标题】:Failed to write session data, php and memcached写入会话数据失败,php和memcached
【发布时间】:2012-08-24 15:25:17
【问题描述】:

我最近尝试在 php 中实现 memcached 以保存会话。 我在我的 php.ini 中修改了 session.save_handler 并且在大多数情况下它可以正常工作。会话保存在其中。但是,有时,我会在某些会话中收到这条奇怪的消息:

PHP 警告:未知:无法写入会话数据(memcached)。请在第 0 行的 Unknown 中验证 session.save_path 的当前设置是否正确(x.x.x.x:11211)。

会话数据是相同的,在 memcached 的 1MB 障碍下,我还没有看到此消息出现的模式......可能每分钟几次。该网站通常处于中等负载状态,同时有 150 个用户。

【问题讨论】:

    标签: php memcached


    【解决方案1】:

    如果您使用的是memcache,那么save_path 必须有tcp:// 前缀。

    如果您使用的是 memcached,那么 save_path 不应有 tcp:// 前缀。

    【讨论】:

      【解决方案2】:

      答案是 Memcached 对象最大为 1MB(默认)

      如果你的数组或对象超过了这个限制,对象将被神奇地移除:)

      您会话中的所有项目都将被删除,之所以这么说,是因为此时此刻我已经亲身体验过

      我通过像这样启动 Memcached Session 服务器解决了这个问题

      memcached -I 10m
      

      【讨论】:

        【解决方案3】:

        我相信这与使用 memcached 扩展有关,它在会话之前没有初始化。我切换到使用 memcache 扩展而不是 memcached 扩展并且它可以工作。

        session.save_handler = memcache
        session.save_path="tcp://192.168.1.103:11211"
        

        【讨论】:

        • memcache 扩展发生了同样的问题。这不是为什么它不起作用的答案,也不是建议如何修复它。
        【解决方案4】:

        我在 symfony2 和 docker-compose 堆栈上遇到了类似的问题。

        错误说明:

        警告:无法写入会话数据(用户)。请验证 session.save_path 的当前设置是否正确

        问题是我有一个过时的./app/config/parameters.yml

        检查您的 memchached 设置以满足您的需求,例如:

        parameters:
            session_memcached.host: '%session_memcached_host%'
            session_memcached.port: '%session_memcached_port%'
            session_memcached.prefix: '%session_memcached_prefix%'
            session_memcached.expire: '%session_memcached_expire%'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-17
          • 2013-04-08
          • 1970-01-01
          • 1970-01-01
          • 2020-09-20
          • 1970-01-01
          相关资源
          最近更新 更多