我如何获得从 live 到我的 repo 的变化?在 heroku 应用程序上运行的文件已更改,现在如果我推送这些文件将被覆盖。
我的 php 代码在 heroku 上运行,并将“数据库”的东西存储在本地文件中。
{
"id":1,
"date":"12/1/2012",
"topImg":"/img/dates/1.jpg"
.....
所以这些东西存储在一个 json 对象中,然后就保存了。
不要这样做!
本地文件是你的敌人,因为 Heroku 是一个云应用程序主机,它在多个匿名负载平衡节点上运行应用程序。
也许您现在出于开发目的正在运行一个 dyno,但如果您想让您的网站上线,您至少需要两个 dyno(因为 Heroku 免费层服务与其非免费层服务在质量上有所不同,特别是如果免费的测功机没有被使用,他们会降低它的转速,但他们永远不会对非免费的测功机这样做)。当您有多个测功机时,将本地文件用于缓存以外的任何内容将完全无法管理。
即使您以某种方式永远使用一个测功机,Heroku 测功机也不能保证维护其本地存储 - 例如,如果您的测功机所使用的机器上出现硬件故障,Heroku 会毫不犹豫地关闭您的应用程序,删除所有本地存储,并在仅加载您的应用程序代码的情况下再次启动它,因为它不希望您的应用程序将本地存储用于任何事情。
没有一种受支持的方法可以从测功机中获取文件,因为再一次,将本地文件存储在测功机上从来都不是一个好主意。但是,如果您真的非常需要这样做,您可以使用heroku run
并运行一次性命令,例如,打开一个 shell 并将文件上传到某处。再说一遍:不要为任何严重的事情这样做,因为一旦你有多个测功机,几乎不可能管理它们上的文件。
完全同意@Andrew。如果您想在这些文档上添加搜索功能,则更喜欢将 mongoDB 数据库作为服务与 heroku 一起使用:https ://addons.heroku.com/catalog/mongolab 或 elasticsearch: https ://addons.heroku.com/目录/搜索框。有很好的设计来存储 json 文档,并且通过这些服务,您可以确保无论您的 dynos 是什么,您的数据都将是持久的。
现在,要取回您的 heroku 本地文件,我会这样做:
heroku run bash
scp -pYourPort yourFile(s) userName@yourDestination:/pathToSaveLocaion
我希望这能帮到您。