为什么更新作曲家中的依赖关系这么慢?

时间:2012-11-16 09:31:08

标签: symfony dependencies composer-php

我正在使用composer(http://getcomposer.org/)来管理Symfony2中的已安装捆绑包(symfony v 2.1.3)。作曲家的版本是de3188c

我有问题,当我将新的bundle添加到composer.json并执行它时,显示有关更新依赖项的消息,然后下载它们的时间非常少。

我在composer.json中有这些数据(见下文),执行时间大约是20分钟!互联网连接足够快我可以非常快地下载大文件...

有什么技巧可以让它更快吗?

{
"name": "symfony/framework-standard-edition",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
    "psr-0": { "": "src/" }
},
"require": {
    "php": ">=5.3.3",
    "symfony/symfony": "2.1.*",
    "doctrine/orm": ">=2.2.3,<2.4-dev",
    "doctrine/doctrine-bundle": "1.0.*",
    "twig/extensions": "1.0.*",
    "symfony/assetic-bundle": "2.1.*",
    "symfony/swiftmailer-bundle": "2.1.*",
    "symfony/monolog-bundle": "2.1.*",
    "sensio/distribution-bundle": "2.1.*",
    "sensio/framework-extra-bundle": "2.1.*",
    "sensio/generator-bundle": "2.1.*",
    "jms/security-extra-bundle": "1.2.*",
    "jms/di-extra-bundle": "1.1.*",
    "doctrine/doctrine-fixtures-bundle": "dev-master",
    "webignition/doctrine-migrations-bundle": "dev-master"
},
"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"
    ]
},
"minimum-stability": "dev",
"extra": {
    "symfony-app-dir": "app",
    "symfony-web-dir": "web"
}

5 个答案:

答案 0 :(得分:76)

尝试为composer.json中的每个依赖项指定一个版本,并在调用composer时使用选项--prefer-dist。它将从存储库(如果可用)而不是单个文件下载ZIP文件。

php composer.phar install --prefer-dist

答案 1 :(得分:23)

既然您接受了答案,那就好像解决了您的问题。以防万一其他人偶然发现这个问题(就像我在搜索时所做的那样),在我的情况下,一个非常慢的Composer安装与我的PHP版本有关(警告的话,我是一个完整而完全的作曲家新手)尽管Composer完成了标准检查并且说一切都很好。我运行Ubuntu 12.04 LTS并且懒得在Precise仓库中从默认的PHP 5.3.10(你正在运行的版本)升级。

通过Composer安装Twig最初花了我大约30分钟。花了一个多小时后,我放弃了安装Doctrine的工作。我升级到5.4.17(使用此PPA https://launchpad.net/~ondrej/+archive/php5)并在几秒钟内安装Doctrine。

答案 2 :(得分:14)

我发现它也很慢,几十分钟就慢了。

对我来说,我添加了-vvv并发现它悬挂在类似的东西上 Downloading https://packagist.org/p/provider-active$53cdf887c8d2925b3501f47d6980fb7bda2310716369bf7a84857c6e62bbab0f.json

然后我去浏览器并尝试下载该JSON文件,当然。 packagist.org是导致缓慢的原因。

答案 3 :(得分:10)

就我而言,上述建议没有任何区别。为count(*) group by row#, seat#, and child使用HTTPS协议做了什么:

packagist

php composer.phar config --global repo.packagist composer https://packagist.org

取决于您的设置

答案 4 :(得分:0)

要诊断此用途,我使用要求命令和 -vvv 属性。

composer require larapack/dd -vvv

在我的情况下,我发现作曲家的速度很慢是因为fxp / composer-asset-plugin。

composer global show
composer global remove fxp/composer-asset-plugin

和瞧