Symfony 为什么composer中的依赖项更新如此缓慢?

Symfony 为什么composer中的依赖项更新如此缓慢?,symfony,dependencies,composer-php,Symfony,Dependencies,Composer Php,我正在使用composer()管理Symfony2(symfonyv2.1.3)中已安装的捆绑包。编写器的版本是de3188c 我的问题是,当我向composer.json中添加新包并执行它时,显示有关更新依赖项和下一次下载它们的消息的时间非常少 我在composer.json(见下文)中有这些数据,执行时间大约为20分钟!!!互联网连接足够快,我可以下载大文件非常快 有什么窍门可以让它更快吗 { "name": "symfony/framework-standard-edition", "de

我正在使用composer()管理
Symfony2
(symfonyv2.1.3)中已安装的捆绑包。编写器的版本是
de3188c

我的问题是,当我向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"
}
{
“名称”:“symfony/framework标准版”,
“说明”:“Symfony标准版”发行版,
“自动加载”:{
“psr-0”:{”“:“src/”}
},
“要求”:{
“php”:“>=5.3.3”,
“symfony/symfony”:“2.1.*”,

“条令/orm”:“>=2.2.3,尝试在composer.json中为每个依赖项指定一个版本,并在调用composer时使用选项
--preference dist
。它将从存储库(如果可用)而不是单个文件下载ZIP文件

php composer.phar install --prefer-dist

既然你接受了一个答案,看起来这就解决了你的问题。不过,以防其他人偶然发现这个问题(就像我搜索时所做的那样),在我的情况下,一个非常缓慢的Composer安装必须与我的PHP版本有关(警告一句,我是一个完全的作曲家新手),尽管Composer进行了标准检查,并表示一切正常。我运行Ubuntu12.04LTS,但太懒了,无法在精确的repo中从默认的PHP5.3.10(与您运行的版本相同)升级


通过Composer安装Twig最初花了我30分钟左右的时间。在花了一个多小时之后,我放弃了安装条令。我升级到5.4.17(使用此PPA),安装条令只需几秒钟即可完成。

我发现它也非常慢,只需几十分钟

对我来说,我添加了
-vvv
,发现它挂在像这样的东西上
下载https://packagist.org/p/provider-active$53CDF887C8D2925B3501F47D690FB7BDA2310716369BF7A84857C6E62BBA0F.json


然后,我转到浏览器并尝试下载JSON文件,果然。是packagist.org导致了速度缓慢。

在我的情况下,上述建议没有任何影响。我所做的是使用
HTTPS
协议来
packagist

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


根据您的设置,我使用带有-vvv属性的require命令来诊断此使用

composer require larapack/dd -vvv
在我的例子中,我发现composer速度慢是因为fxp/composer资产插件

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

瞧,你能做的就是指定所需的标签(而不是2.1.*使用2.1.1 f.e.)2014年12月初,发现了一个优化,即在Composer运行期间停止尝试垃圾收集内存。由于Composer内部正在执行的一些非常具体的操作,它花费了很长时间,但最终效果很小。在修补程序之后,许多人报告Composer将占用更多内存,但运行时间会减少一半,甚至更少。a还可以尝试更新composer。它显著提高了我的非常简单的项目的加载时间,该项目有很多可传递的依赖性(使用phpunit)它还保留了一份静坐~/.composer的副本,以便其他项目或更新等将首先到达那里。这似乎正是我的问题。当我刚刚在没有锁文件的情况下运行composer安装时,花了大约30分钟。当我使用锁文件时,它在几秒钟内完成。+1不管PHP升级是否为选项,因为接受了answer对我也不起作用。在PHP5.5.9中工作得更快。我也听说有人在HHVM上使用composer获得了惊人的结果。禁用xdebug似乎也有帮助。这是我缓慢的根本原因。这似乎对我起作用(不完全如此,但至少少了一件事)这对我来说非常有效。我个人认为这是最好的答案。对我来说非常有效。我已经尝试了很多解决方案(比如禁用xdebug、激活缓存、添加--preferdist)所有这些都不起作用,我偶然得到了这个答案,而这是唯一真正解决问题的解决方案。应该被标记为我的案例的最佳答案。
composer global show
composer global remove fxp/composer-asset-plugin