首页 文章

尽管是--prefer-dist标志,但仍然无法更新作曲家依赖关系

提问于
浏览
59

为什么我的作曲家依赖关系更新需要两分钟,即使没有更改?

popular suggestion是要添加 --prefer-dist 标志,我已将其附加到我的命令:

php composer.phar update --prefer-dist

但这没有区别 . 下面是我的composer.json文件 - 我错过了一些明显的东西吗?

{
    "name": "my-namespace/symfony",
    "type": "project",
    "description": "",
    "require": {
        "php": ">=5.3.3",
        "symfony/symfony": "2.3.*",
        "doctrine/orm": ">=2.2.3,<2.4-dev",
        "doctrine/doctrine-bundle": "1.2.*",
        "twig/extensions": "1.0.*",
        "symfony/assetic-bundle": "2.3.*",
        "symfony/monolog-bundle": "2.3.*",
        "sensio/framework-extra-bundle": "2.3.*",
        "sensio/generator-bundle": "2.3.*",
        "sensio/distribution-bundle": "2.2.*",
        "my-namespace/my-bundle": "1.0.*"
    },
   "repositories": [
        {
            "type": "vcs",
            "url": "http://username:password@git.com/my-bundle.git"
        }
    ],    
    "scripts": {
        "post-install-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ],
        "post-update-cmd": [
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
            "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
        ]
    },
    "config": {
        "bin-dir": "bin"
    },
    "minimum-stability": "dev",
    "extra": {
        "symfony-app-dir": "app",
        "symfony-web-dir": "web",
        "branch-alias": {
            "dev-master": "2.3-dev"
        }
    }
}

8 回答

  • 2

    在CLI环境中,此问题通常与 xdebug lodaed(无论是否启用)无关 .

    您可以使用以下命令检查是否为CLI启用了xdebug:

    // unix
    php -m | grep xdebug
    // windows
    php -m | findstr xdebug
    

    通过启用最大详细程度和分析信息,可以获得有关操作所需时间的更多信息:

    composer install --prefer-dist -vvv --profile
    

    要么

    composer update --prefer-dist -vvv --profile
    
  • 91

    可能减慢Composer速度的因素:

    • 正如所指出的, xdebug 会影响Composer的性能 . 运行 composer diagnose 也会警告你这件事 .

    • 正在运行 update 而不是 install . 人们经常只是经常运行 update . 这使得Composer可以完成整个依赖项解析过程,无论是否有任何更改 . 当您运行 install 时,Composer直接从您的.lock文件中获取需求,跳过依赖项解析过程 . 您应该只在应用程序的开发生命周期中运行 update . 即使这样,也不是每天必须经常运行的东西 .

    • 如果您有自己经常更新的特定依赖项,则可以尝试通过运行_2675660来简化该过程 .

    • 设置 minimum-stabilitydev . 这极大地扩展了依赖解析器必须考虑的可能性 . 除非你别无选择,否则你几乎不应该将 minimum-stability 降低到 dev . 查看替代方案,例如暂时使用内联 @dev 标志 .

  • 20

    似乎问题已经解决,但这可能对某人有所帮助 .

    每当我运行编辑器安装或更新时,只需要10秒钟来获取https://packagist.org/packages.json文件 . 最终我发现问题与IPv6有关,因为从IPv4站点获取文件只需不到一秒钟 .
    问题是我的ISP不支持IPv6,但我在以太网属性中启用了它 . 在我的网络设置中取消 Internet Protocol Version 6 (TCP/IPv6) 后,安装/更新速度大幅提升(从200秒降至10)

  • 3

    我在具有低内存的VM上运行Symfony2时遇到此问题 . 我增加了机器的内存,并且大大改善了 . 您可以检查系统上的内存,看看它是否可以升级 .

  • 4

    您正在使用私人存储库 . 这不允许下载您包含的版本的压缩版本,但必须克隆存储库 . 此外,可能必须扫描整个存储库以找到所需的版本 .

    您应该检查是否使用Satis . 通过这种方式,您可以准备自己软件的ZIP并将其下载,就像Github上托管的东西一样(其中有一个API,Composer使用它来允许下载ZIP,即使它们没有明确准备) .

  • 1

    事实上,xdebug肯定会减慢速度 . 卸载xdebug并不理想 . 一个很好的选择是使用HHVM并将它放在作曲家的职责上 .

    安装HHVM非常简单,HHVM本身比PHP5快得多 . 这是双赢 - YMMV,但是即使xdebug不在画面中,我也会得到近20倍的速度增加(无论是在眼球dyno上) .

    如果您使用的是OS X,那么这个链接可能会有所帮助(我写的关于此事的博客文章):

    http://circlical.com/blog/2015/11/11/slow-composer-on-os-x

  • 1

    我和 composer update 有同样的问题,我使用 composer selfupdate 将作曲家本身更新到了最新版本,现在速度可以接受 .

  • 0

    检查是否安装了 zipunzip . 如果它们丢失,Composer将克隆repo而不是下载压缩版本 .

相关问题