我在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的问题:
答案 0 :(得分:1)
您能否确认当前存储.json
文件的位置?如果您使用的是文件系统,那么Heroku会使用它称为短暂文件系统的东西。只要该dyno正在运行,每个dyno都会获得自己的文件系统。每当你的dyno重新启动时,任何更改都将被重置。只要有部署或每天一次,就会发生这种情况。如果这是一个免费的dyno,它可能每次睡觉/醒来时都会发生,但我无法证实这一点。
如果要存储可在应用程序生命周期内更改的值,则需要使用非文件系统存储。 Heroku有几个附加组件,您可以免费试用。首先想到的是mlab或redis。
https://elements.heroku.com/addons/mongolab
https://elements.heroku.com/addons/rediscloud
您可以阅读有关文件系统here
的更多信息