更快的作曲家安装

时间:2013-12-29 16:33:28

标签: php composer-php

作曲家安装通常需要几分钟。在生产环境中,它感觉太慢了。 是否可以将作曲家安装到临时目录然后切换它?如果可能,停机时间应该大约为零。

或者还有其他方法可以更快地安装作曲家吗?

3 个答案:

答案 0 :(得分:13)

我创建了一个composer插件来并行下载包 https://packagist.org/packages/hirak/prestissimo

$ composer global require hirak/prestissimo

请试一试。在我的环境中,composer install的速度提高了10倍。

答案 1 :(得分:2)

您可以有时使用composer install标记显着加快--prefer-dist,这恰好建议用于生产用途:

  

- prefer-dist --prefer-source的反转,如果可能,作曲家将从dist安装。这可以大大加快构建服务器和其他通常不运行供应商更新的用例的安装速度。

这里有

composer install个文档:http://getcomposer.org/doc/03-cli.md#install

编辑澄清有时

我说有时加速composer install因为有很多因素会让人感觉很慢,其中最重要的是网络性能和当前的Github状态。缓慢的安装可能真的很令人沮丧,但它并不总是作为Composer的b / c。

答案 2 :(得分:1)

你问两个不同且无关的事情。

是的,这是一个解决方案,可以在一个单独的目录中构建您网站的下一个版本,然后在将旧版本移开后将其放置到位。实际上,它是最好的解决方案。

这就是我构建的部署脚本的工作方式:

  1. 在另一个目录中准备下一个版本的网站(让我们说/var/www/new);以下项目列表及其顺序不是静态的,有些项目需要不同的流程:
    • 从repo获取最新版本的代码;
    • 删除实际网站上不需要的文件(.gitignore,IDE项目文件,占位符等);
    • 运行composer install;
    • 复制/生成包含实时服务器设置的配置文件(存储在存储库中的设置包含虚拟值);
    • 更改所有文件的用户和权限;使一些目录可由Web服务器写入;
    • 创建符号链接,目录等;例如,包含用户上载文件的目录位于服务器目录之外的某个位置,并在部署期间创建符号链接以使其内容通过Web服务器可用;
  2. 将实时代码移开;我使用mv移动整个目录(例如/var/www/html/var/www/old);
  3. 将准备好的新版本移至正确的位置(mv /var/www/new /var/www/html);
  4. 将以前的版本移到存档中(删除vendor的内容以及其他未更改或外部的文件后。)
  5. 优点:

    • 停机时间为零(可能是步骤#2和#3之间的微秒);
    • 失败的版本不会影响实际网站(如果处理得当);
    • 可以轻松地恢复到以前的版本(如果需要)。

    关于另一个问题,我知道加速composer的唯一方法是避免使用加载xdebug扩展名的PHP来运行它。无论如何,xdebug扩展名不应加载到生产服务器上。