服务器上的 .json 文件中的值在一段时间后更改回初始值

Value changed in .json file on server changes back to initial value after some time

我在 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)多少次,此更改都会正确反映。

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

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


编辑:

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

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

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

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

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