如何在多个平台上自动更新一个PHP类


How to automatically update one PHP class on several platforms?

假设我有一个php类存储在一个文件中。如果这个类在不同主机上的几个项目中使用(甚至由不同的用户使用),那么更新这个类将是一个很大的痛苦。

我可以想象这可以通过这个例程自动完成:

  1. PHP类(或文件)存储在单个存储库中

  2. 在每个使用这个类的主机上应该是一个cron作业来测试这个(这些)类(或文件)是否有任何更新。

  3. 如果是,此文件正在下载并替换现有文件

我可以自己做所有这些,但我认为应该有这样的现成的解决方案。我现有的仓库,如github有这样的功能或任何其他…

问题:

  1. 我上面描述的场景对于这个功能是最优的吗?

  2. 是否有现成的解决方案?(希望免费解决)

我们使用composer来管理我们的依赖,这些依赖可以从私有存储库加载。在项目内部开发共享类,然后将其设置为composer.json内部下游项目的依赖项。更新上游项目(包含共享文件)后,下游项目可以通过运行$ composer update

将这些更改拉入。

您可以设置下游项目指向您的上游项目,如composer.json内部:

{
    "require": {
        "myname/myupstreamproject": "dev-master"
    },
    "repositories": [
         {
             "type": "git",
             "url": "git@github.com:myname/myproject.git"
         }
    ]
}

如果你在你的repo上使用标签,你可以用适当的版本语法替换"dev-master",如果出于某种原因,你需要让你的一些项目使用不同版本的共享文件。

检查使用rsync。Rsync可用于跨多个系统复制文件/文件夹,并且可以从源系统触发以部署更改(如果有的话)(增量)。或者,如果类在github或其他存储库系统中,则编写一个定期执行更新的自动任务。