我是HEROKU APPS
的新手。
在我的heroku应用程序中,我遇到了问题。那就是我使用php脚本在服务器上保存数据。
示例:
<?PHP
$file = "example.txt";
$data = "Something...";
file_put_contents($file,$data);
?>
此PHP脚本成功运行并完美保存数据。
但是,当我将我的APP部署到HEROKU
进行更新时 - >在此过程example.txt
文件中会自动删除。
答案 0 :(得分:10)
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)
短暂的文件系统
每个dyno都有自己的短暂文件系统,并带有最近部署代码的全新副本。在dyno的生命周期中,其运行进程可以将文件系统用作临时暂存器,但是任何其他dyno中的进程都不会看到所写的文件,并且在dyno停止或重新启动时,所写的任何文件都将被丢弃。
所以你用Heroku dyno无法节省多少钱。特别是在你推出新版本之后,重新启动了dyno并重置了文件系统。
您需要将文件存储到远程位置,然后才能将它们存放在dyno重置中。