Heroku部署会自动删除服务器文件吗?

时间:2012-12-25 15:38:42

标签: php heroku heroku-toolbelt

我是HEROKU APPS的新手。

在我的heroku应用程序中,我遇到了问题。那就是我使用php脚本在服务器上保存数据。

示例:

<?PHP

$file = "example.txt";

$data = "Something...";

file_put_contents($file,$data);

?>

此PHP脚本成功运行并完美保存数据。

但是,当我将我的APP部署到HEROKU进行更新时 - >在此过程example.txt文件中会自动删除。

3 个答案:

答案 0 :(得分:10)

Heroku文件系统

Heroku的行为因您使用的堆栈而略有不同。使用Bamboo,大多数文件系统都是read-only。使用Cedar,它是ephemeral

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

答案 1 :(得分:2)

Heroku不会在git推送之间为持久性文件提供硬盘空间,你必须使用像Amazon S3这样的东西来存储文件。这就是Heroku调用文件系统 Ephemeral文件系统的原因。它在早期版本的堆栈中甚至是只读的。

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

答案 2 :(得分:0)

see the docs

  

短暂的文件系统

     

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

所以你用Heroku dyno无法节省多少钱。特别是在你推出新版本之后,重新启动了dyno并重置了文件系统。

您需要将文件存储到远程位置,然后才能将它们存放在dyno重置中。