我是HEROKU APPS的新手。
在我的heroku应用程序中,我遇到了问题。 那就是我正在使用php脚本将数据保存在服务器上。
范例:
$file ="example.txt";
$data ="Something...";
file_put_contents($file,$data);
?>
此PHP脚本成功运行并完美保存了数据。
但是,当我将我的APP部署到HEROKU进行更新->时,该example.txt文件会自动删除。
您没有提出问题,但发表了声明。 接受您的经验,因为没有什么可以解决的。 这是预期的行为,Heroku文档对此很清楚。
嗨,哈克! 感谢您编辑我的问题。
Heroku文件系统
Heroku的行为因您使用的堆栈而略有不同。使用Bamboo,大多数文件系统是只读的。对于Cedar,它是短暂的。
在这两种情况下,都不会在dyno之间共享文件系统,并且不应将其用于存储。为了可靠地在服务器端存储数据,您将需要使用数据库(也许将上传内容存储为blob),或用作另一台主机或服务上的外部资产。
Heroku在git push之间不为持久性文件提供硬盘空间,您必须使用Amazon S3之类的文件存储。这就是为什么Heroku称其文件系统为临时文件系统。在堆栈的早期版本中,它甚至是只读的。
Heroku上有一个教程:使用AWS S3存储静态资产和文件上传
Femaref HEROKU免费提供200MB空间。
@ user1882503:是的,用于您的代码。 这就是git repro中的内容。如果将新文件提交到树中,那就太好了。 如果没有,他们就会迷路。 简单。
请参阅文档:
Ephemeral filesystem
Each dyno gets its own ephemeral filesystem, with a fresh copy of the most recently deployed code. During the dyno’s lifetime its running processes can use the filesystem as a temporary scratchpad, but no files that are written are visible to processes in any other dyno and any files written will be discarded the moment the dyno is stopped or restarted.
因此,使用Heroku测功机无法节省太多。特别是在推送新版本之后,将重新启动dyno,然后重置文件系统。
您需要将文件存储到远程位置,然后才能在dyno重置后保留它们。