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,大部分文件系统都是只读的。对于 Cedar,它是短暂的。

在任何一种情况下,文件系统都不会在dynos之间共享,也不应该用于存储。为了在服务器端可靠地存储数据,您将需要使用数据库(可能将您的上传存储为 blob),或者作为另一个主机或服务上的外部资产。

于 2012-12-25T15:56:18.630 回答
3

Heroku 不会在 git 推送之间为持久文件提供硬盘空间,您必须使用 Amazon S3 之类的东西进行文件存储。这就是 Heroku 将他们的文件系统称为Ephemeral filesystem的原因。它甚至在堆栈的早期版本中是只读的。

Heroku 有一个教程:Using AWS S3 to Store Static Assets and File Uploads

于 2012-12-25T15:44:51.490 回答
1

参阅文档

临时文件系统

每个 dyno 都有自己的临时文件系统,以及最近部署的代码的新副本。在 dyno 的生命周期中,它的运行进程可以将文件系统用作临时暂存器,但是任何其他 dyno 中的进程都看不到写入的文件,并且在停止或重新启动 dyno 时,写入的任何文件都将被丢弃。

所以你不能用你的 Heroku dyno 节省很多。尤其是在您推送了新版本之后,测功机将重新启动,然后文件系统将被重置。

您需要将文件存储到远程位置,然后如果它们应该在测功机重置中幸存下来。

于 2012-12-25T15:51:58.567 回答