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

时间:2013-10-11 11:08:01

标签: php symfony composer-php

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

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"
        }
    }
}

11 个答案:

答案 0 :(得分:92)

此问题通常与在CLI环境中加载的xdebug有关。 (如果启用xdebug则无关紧要。)

您可以使用以下其中一个命令检查是否启用了xdebug。

// Unix
php -m | grep xdebug
// Windows
php -m | findstr xdebug

通过启用最大详细程度和分析信息,可以获得有关哪些操作需要很长时间的更多信息。 (如果要更新软件包,请将 install 替换为 update 。)

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

答案 1 :(得分:20)

可能会降低Composer速度的因素:

  • 正如所指出的,xdebug会影响Composer的性能。正在运行composer diagnose也会对此发出警告。

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

  • 如果您有自己经常更新的特定依赖项,则可以尝试通过运行composer update vendor/package --with-dependencies来简化该过程。

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

答案 2 :(得分:4)

似乎问题已经解决,但这可能有助于某人。

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

答案 3 :(得分:3)

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

答案 4 :(得分:2)

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

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

答案 5 :(得分:1)

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

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

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

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

答案 6 :(得分:1)

我遇到与 var nodeSum = {}; var nodeStatus = { "node_stats": { "pendrive": { "mount_status": { "TEST_PROXY": "error", "TEST_TARGET": "error", "TEST_ARCHIVE": "error", "TEST_HOME": "error" } }, "minichip": { "mount_status": { "TEST_PROXY": "na", "TEST_TARGET": "na", "TEST_ARCHIVE": "na", "TEST_HOME": "na" } }, "simcard": { "mount_status": { "TEST_HOME": "error", "TEST_TARGET": "error", "TEST_ARCHIVE": "error", "TEST_PROXY": "error" } }, "hostname": [ "nikola", "goldplus", "pendrive", "simcard", "airtel", "minichip", "voda" ], "airtel": { "mount_status": { "TEST_PROXY": "ok", "TEST_TARGET": "ok", "TEST_ARCHIVE": "ok", "TEST_HOME": "ok" } }, "voda": { "mount_status": { "TEST_HOME": "na", "TEST_TARGET": "na", "TEST_ARCHIVE": "na", "TEST_PROXY": "na" } }, "nikola": { "mount_status": { "TEST_HOME": "na", "TEST_ARCHIVE": "na", "TEST_TARGET": "na", "TEST_PROXY": "na" } } } } console.log(nodeStatus); var hostNames = nodeStatus["node_stats"]["hostname"]; for(var i = 0; i<hostNames.length;i++){ if(nodeStatus["node_stats"][hostNames[i]]){ eachNode = nodeStatus["node_stats"][hostNames[i]]; console.log(eachNode); } //nodeSum[hostNames[i]] = eachNode["mount_status"][Object.keys(eachNode["mount_status"])]; if(eachNode){ if(eachNode.hasOwnProperty("mount_status")){ if(i <= 1) var allBins = Object.keys(eachNode["mount_status"]); console.log('all keys',allBins); console.log(nodeStatus["node_stats"][hostNames[i]][allBins[i]]); console.log(Object.values(eachNode["mount_status"])); var binStatusArray = Object.values(eachNode["mount_status"]); nodeSum[allBins[i]] = eachNode["mount_status"][allBins[i]]; } } } console.log('results',nodeSum); }相同的问题,我使用composer update将作曲家本身更新为最新版本,现在速度可以接受。

答案 7 :(得分:0)

检查是否安装了zipunzip。如果缺少它们,Composer将克隆存储库而不是下载压缩版本。

答案 8 :(得分:0)

我在/etc/gai.conf文件中添加了 优先级:: ffff:0:0/96 100 ,然后尝试进行更新。

答案 9 :(得分:0)

我的解决方案WINDOWS,使用Laravel的10 x 64位WAMP用户, 在几周缓慢的作曲家更新和作曲家要求之后

您使用的是一个叫做cacert.pem的东西

https://curl.haxx.se/docs/caextract.html

然后将该文件粘贴到您的wamp主目录中 C:\ wamp64 \ cacert.pem

然后在搜索选项卡中搜索php.ini,在sublime或任何文本编辑器上打开所有具有该名称的文件

找到一行 curl.cainfo和openssl.cafile

将您的路径输入此文件-请参阅我的案例示例:

curl.cainfo="C:\wamp64\cacert.pem"

openssl.cafile="C:\wamp64\cacert.pem"

在所有文件中搜索之前搜索过的所有php.ini文件!

OKAY RESTART SERVER对我有用,对你有希望 我希望以前有人对此发表评论!所以我不会花2个星期来修复它

也打电话

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

这会在https上建立连接 也运行这个

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

答案 10 :(得分:0)

由于启用了IPv6,我遇到了问题。运行以下命令可以解决此问题:

sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf"

您可以在此处找到更多信息:https://getcomposer.org/doc/articles/troubleshooting.md#operation-timed-out-ipv6-issues-