0

Cloud9 に小さな PHP アプリがあり、Cloud9 の Git ターミナルを使用して Heroku でホストしました。

Web アプリのポイントは、管理者が Web アプリで設定できるいくつかの構成値 (基本的に名前と値のペア) があることです。これらの値は.jsonファイルに保存されます。Web アプリは、Rest API を介してそこに保存されている構成値を提供.jsonし、Android アプリからは、Volley ライブラリを使用してこの API を使用し、Android アプリでそれらの構成値を取得します。

Web アプリのユーザー インターフェイスから構成値を変更すると、ブラウザーの URL から REST API にアクセスすると変更が反映されます。Android アプリから REST API を使用すると、そこにも変更が反映されます。この変更は、このセッションで (Volley を介して REST API を使用する) Android アプリを何回実行しても正しく反映されます。

しかし、問題は、コンピューターの電源を切って、たとえば数時間後にコンピューターに戻ると、構成データが再び初期値に設定されているように見えることです。REST API を使用している Android アプリだけでなく、ブラウザー (ブラウザーの URL からアクセス) で何度も確認しました。Web アプリで変更した値が再び初期値になります。

なぜこれが起こっているのか、それに対して何ができるのかについてのアイデアはありますか?


編集:

Heroku で MLab MongoDB をインストールする際の問題:

ここに画像の説明を入力

4

1 に答える 1

1

現在ファイルを保存している場所を確認していただけ.jsonますか? ファイルシステムを使用している場合、Heroku はエフェメラル ファイルシステムと呼ばれるものを使用するため、この問題が発生します。各 dyno は、その dyno が実行されている間だけ存在する独自のファイルシステムを取得します。dyno が再起動するたびに、すべての変更がリセットされます。これは、展開があるたびに、または 1 日に 1 回発生します。これが無料の dyno の場合、スリープ/ウェイクのたびに発生する可能性がありますが、確認できません。

アプリケーションの存続期間中に変更される可能性のある値を保存している場合は、ファイルシステム以外のストレージを使用する必要があります。Heroku には、無料で試すことができるアドオンがいくつかあります。最初に思い浮かぶのは、mlab または redis です。

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

ファイルシステムの詳細については、こちらをご覧ください

于 2016-06-20T08:08:42.413 に答える