9

私は初めてですHEROKU APPS

私のherokuアプリで問題が発生しました。つまり、サーバーにデータを保存するためにphpスクリプトを使用しています。

例 :

<?PHP

$file = "example.txt";

$data = "Something...";

file_put_contents($file,$data);

?>

このPHPスクリプトは正常に実行され、データを完全に保存します。

しかし、APPをデプロイしHEROKUて更新すると、この歳差運動example.txtファイルは自動的に削除されます。

4

3 に答える 3

12

Herokuファイルシステム

Herokuの動作は、使用するスタックによって少し異なります。Bambooでは、ほとんどのファイルシステムは読み取り専用です。シーダーでは、それは一時的なものです。

いずれの場合も、ファイルシステムはdyno間で共有されないため、ストレージに使用しないでください。データをサーバー側に確実に保存するには、データベースを使用するか(おそらく、アップロードをBLOBとして保存する)、または別のホストやサービスの外部アセットとして使用する必要があります。

于 2012-12-25T15:56:18.630 に答える
3

Herokuは、gitプッシュ間で永続ファイルにハードディスクスペースを提供しません。ファイルストレージにはAmazonS3などを使用する必要があります。そのため、Herokuはファイルシステムをエフェメラルファイルシステムと呼んでいます。以前のバージョンのスタックでは読み取り専用でさえありました。

Herokuにはチュートリアルがあります:AWSS3を使用して静的アセットとファイルアップロードを保存する

于 2012-12-25T15:44:51.490 に答える
1

ドキュメントを参照してください:

エフェメラルファイルシステム

各dynoは、最後にデプロイされたコードの新しいコピーを使用して、独自のエフェメラルファイルシステムを取得します。dynoの存続期間中、実行中のプロセスはファイルシステムを一時的なスクラッチパッドとして使用できますが、書き込まれたファイルは他のdynoのプロセスに表示されず、書き込まれたファイルはdynoが停止または再起動された瞬間に破棄されます。

したがって、Herokudynoでは多くを節約することはできません。特に、新しいバージョンをプッシュした後、dynoが再起動され、ファイルシステムがリセットされます。

ファイルをリモートの場所に保存する必要があります。ファイルがdynoリセット後も存続する必要がある場合。

于 2012-12-25T15:51:58.567 に答える