【问题标题】:How can I preserve sessions when I deploy to Heroku?部署到 Heroku 时如何保留会话?
【发布时间】:2012-08-29 16:29:24
【问题描述】:

我正在使用 PHP 制作 Heroku FB 应用程序,每当我执行 git push 时,我的用户会话都会被破坏。为什么会发生这种情况?更重要的是,如何防止这种情况发生?

【问题讨论】:

    标签: php git session heroku


    【解决方案1】:

    您需要将会话存储在数据库中。您可以将它们存储在 Postgres 或 Redis 之类的东西中。这些将在部署期间保留。

    【讨论】:

    • +1 表示解决方案。我将解决“为什么”:Heroku 应用程序使用 ephemeral filesystem。当你推送到 Heroku 时,它会获取你推送的内容并创建一个“slug”——这个 slug 是启动应用程序实例的来源。当你再次推动时,会生成一个新的 slug,并生成新的实例。这就是您丢失会话的原因 - 在部署之间没有任何生成的服务器端持续存在。
    【解决方案2】:

    另一个没有提到的选项是使用 Memcached 来存储会话。您可以使用 heroku 插件 Memcachier (https://addons.heroku.com/memcachier)。

    要配置 php 以使用 memcached 会话处理程序,请查看扩展程序的手册http://php.net/manual/en/memcached.sessions.php。基本上你设置 php.ini 指令:

    session.save_handler = memcached
    session.save_path = "localhost:11211"
    

    将 save_path 替换为安装插件时提供的 Memcachier 地址和端口。

    【讨论】:

    【解决方案3】:

    我使用 AppFog,Memcachier 现在支持 SASL,但不知道如何继续。

    session.save_handler = 内存缓存
    session.save_path = "本地主机:11211"

    现在缺少的是身份验证,我不知道该怎么说 我找到了这个,但我不知道它是否会起作用以及如何使用
    http://php.net/manual/en/memcached.setsaslauthdata.php
    pd:我无法在 appfog 中访问 php.ini,所以我需要通过 htaccess 执行此操作,你能给我一个如何在 htaccess 中执行此操作的示例吗?
    https://docs.appfog.com/languages/php#php_ini
    谢谢

    【讨论】:

      猜你喜欢
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2013-08-02
      • 2019-11-05
      • 2020-09-24
      • 2021-05-09
      相关资源
      最近更新 更多