【问题标题】:Value changed in .json file on server changes back to initial value after some time服务器上 .json 文件中更改的值在一段时间后更改回初始值
【发布时间】:2016-06-19 12:04:46
【问题描述】:

我在 Cloud9 中有一个小型 PHP 应用程序,我使用 Cloud9 的 Git 终端将它托管在 Heroku。

Web 应用程序的重点是管理员可以在 Web 应用程序中设置一些配置值(本质上是名称值对)。然后将这些值存储在.json 文件中。 Web 应用通过 Rest API 和我的 Android 应用提供存储在 .json 中的那些配置值,我使用 Volley 库来使用这个 API,并在 Android 应用中获取这些配置值。

当我通过 Web 应用程序中的用户界面更改配置值时,更改会在我通过浏览器中的 URL 访问 REST API 时反映出来。当我从我的 Android 应用程序中使用 REST API 时,更改也会反映在那里。 无论我在此会话中运行多少次 Android 应用(通过 Volley 使用 REST API),此更改都会正确反映。

但问题是,如果我关闭计算机并在几个小时后重新使用它,配置数据似乎又回到了初始值。我检查了很多次在浏览器中的时间(通过浏览器中的 URL 访问)以及在我的使用 REST API 的 Android 应用程序中; 我在网络应用中更改的值再次赋予其初始值。

关于为什么会发生这种情况以及我能做些什么的任何想法?


编辑:

在 Heroku 安装 MLab MongoDB 时出现问题:

【问题讨论】:

    标签: android rest heroku android-volley cloud9


    【解决方案1】:

    您能否确认您当前存储.json 文件的位置?如果你使用的是文件系统,你会遇到这个问题,因为 Heroku 使用了它称为临时文件系统的东西。每个测功机都有自己的文件系统,该文件系统仅在该测功机运行时才存在。每当您的测功机重新启动时,任何更改都将被重置。只要有部署或每天一次,就会发生这种情况。如果这是一个免费的测功机,它可能会在每次睡眠/唤醒时发生,但我无法确认。

    如果您要存储在应用程序生命周期内可能发生变化的值,您将需要使用非文件系统存储。 Heroku 有几个可以免费试用的附加组件。首先想到的是 mlab 或 redis。

    https://elements.heroku.com/addons/mongolab
    https://elements.heroku.com/addons/rediscloud

    您可以阅读有关文件系统的更多信息here

    【讨论】:

    • 是的,我正在使用文件系统。 =(
    • 啊,这就解释了。你可以试试 memcache 插件。 elements.heroku.com/addons/memcachedcloud.
    • Heroku 版本是您编译的代码 + 依赖项(称为“slug”)和您的 heroku 配置的组合。测功机本质上是一个迷你 unbuntu 盒子,你的版本可以在上面运行。每当一个 dyno (ubuntu box) 重启时,你的发行版就会被重新安装。因此,您对任何文件所做的任何更改都将重置为版本包含的任何内容。这就是您丢失更改的原因。您需要将此信息存储在 dyno 本身之外,因此 memcache 或 mongo 将是一个好的开始。
    • 完全没有,您可以从各种来源配置 mongo 插件。 mLab 是我过去使用的那个。他们在他们的云基础设施上托管您的 mongo 数据库,因此您可以从您的应用程序远程访问它。你当然会在你的 slug 中对你的 php 应用程序有 mongo 依赖,但数据将在云服务器上。
    • 一些插件要求您使用经过 heroku 验证的帐户,这也可以将您的免费测功机小时数从 550/月增加到 1000/月。他们实际上不会向您的卡收取任何费用。你有借记卡吗?或者,您可以使用您的 heroku 应用程序中的模数.io 帐户,尽管我没有尝试过。 devcenter.heroku.com/articles/free-dyno-hours
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 2017-09-03
    • 2015-02-24
    相关资源
    最近更新 更多