【问题标题】:Session between servers in Google App Engine Flexible PHP environmentGoogle App Engine Flexible PHP 环境中的服务器之间的会话
【发布时间】:2018-01-03 17:08:04
【问题描述】:

我刚刚将我的应用程序移至灵活的 PHP Google App Engine,并很快发现实例之间的共享会话效果不佳。每次刷新页面都会显示不同的会话结果。

我通过强制 app.yaml 中的服务器仅使用一个实例暂时解决了这个问题。但是这个实例现在已经严重超载了。

我试图找出解决服务器之间会话的方法,我发现的最佳信息是: https://github.com/GoogleCloudPlatform/google-cloud-php-datastore/blob/master/DatastoreSessionHandler.php

虽然如果我必须编辑保存到会话的所有脚本,我似乎必须重写很多我自己的和第 3 方的脚本。

有没有人找到一种只需更改会话处理程序而不必更改脚本本身以仅存储会话的方法,例如 $_SESSION['foo'] = 'asdf' ?

非常感谢

【问题讨论】:

    标签: php google-app-engine session


    【解决方案1】:

    有多种选择。

    1. 使用客户端 cookie 我还没有测试过,但谷歌搜索给了我: https://github.com/dcro/php-secure-client-side-sessions

    2. 使用数据库会话。在我看来,以下文章简单易懂: http://culttt.com/2013/02/04/how-to-save-php-sessions-to-a-database/

    3. 使用数据存储。用法见php文件中的cmets: https://github.com/GoogleCloudPlatform/google-cloud-php/blob/master/src/Datastore/DatastoreSessionHandler.php

    【讨论】:

    • 非常感谢!有没有首选的方法。就像存储在数据库或任何其他方式的数据存储或客户端会话中可能更好和/或更便宜?
    • 它们都有不同的优点/缺点。客户端 cookie 是最便宜的,但它有大小限制。
    【解决方案2】:

    我玩游戏有点晚了,但我一直在寻找同样的东西。非常感谢松尾先生(接受的答案)指导我们!

    这是我发现的一个不错的库,它提供了一个 Datastore + Memcache 替代会话处理程序。您可以将其插入并调用而不是“session_start”。无需进一步更改脚本。 https://github.com/tomwalder/php-gds-session

    它在幕后使用同一作者 (https://github.com/tomwalder/php-gds) 的另一个库,您需要配置数据存储连接(使用凭据)。

    【讨论】:

      猜你喜欢
      • 2017-12-07
      • 2018-03-29
      • 2019-11-06
      • 2013-06-26
      • 1970-01-01
      • 2018-04-03
      • 2021-07-14
      • 1970-01-01
      • 2020-10-18
      相关资源
      最近更新 更多