1

我如何获得从 live 到我的 repo 的变化?在 heroku 应用程序上运行的文件已更改,现在如果我推送这些文件将被覆盖。

我的 php 代码在 heroku 上运行,并将“数据库”的东西存储在本地文件中。

        {
        "id":1,
        "date":"12/1/2012",
        "topImg":"/img/dates/1.jpg"
        .....

所以这些东西存储在一个 json 对象中,然后就保存了。

4

2 回答 2

3

不要这样做!

本地文件是你的敌人,因为 Heroku 是一个云应用程序主机,它在多个匿名负载平衡节点上运行应用程序。

也许您现在出于开发目的正在运行一个 dyno,但如果您想让您的网站上线,您至少需要两个 dyno(因为 Heroku 免费层服务与其非免费层服务在质量上有所不同,特别是如果免费的测功机没有被使用,他们会降低它的转速,但他们永远不会对非免费的测功机这样做)。当您有多个测功机时,将本地文件用于缓存以外的任何内容将完全无法管理。

即使您以某种方式永远使用一个测功机,Heroku 测功机也不能保证维护其本地存储 - 例如,如果您的测功机所使用的机器上出现硬件故障,Heroku 会毫不犹豫地关闭您的应用程序,删除所有本地存储,并在仅加载您的应用程序代码的情况下再次启动它,因为它不希望您的应用程序将本地存储用于任何事情。

没有一种受支持的方法可以从测功机中获取文件,因为再一次,将本地文件存储在测功机上从来都不是一个好主意。但是,如果您真的非常需要这样做,您可以使用heroku run并运行一次性命令,例如,打开一个 shell 并将文件上传到某处。再说一遍:不要为任何严重的事情这样做,因为一旦你有多个测功机,几乎不可能管理它们上的文件。

于 2012-12-04T08:11:34.260 回答
0

完全同意@Andrew。如果您想在这些文档上添加搜索功能,则更喜欢将 mongoDB 数据库作为服务与 heroku 一起使用:https ://addons.heroku.com/catalog/mongolab 或 elasticsearch: https ://addons.heroku.com/目录/搜索框。有很好的设计来存储 json 文档,并且通过这些服务,您可以确保无论您的 dynos 是什么,您的数据都将是持久的。

现在,要取回您的 heroku 本地文件,我会这样做:

  1. 运行 heroku bashheroku run bash
  2. 做一个scp -pYourPort yourFile(s) userName@yourDestination:/pathToSaveLocaion
  3. 从您的 heroku 实例注销

我希望这能帮到您。

于 2012-12-04T08:30:23.470 回答