0

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

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

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

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

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


编辑:

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

在此处输入图像描述

4

1 回答 1

1

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

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

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

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

于 2016-06-20T08:08:42.413 回答