作曲家依赖项的更新缓慢,尽管 --prefer-dist 标志



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

一个流行的建议是附加--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"
        }
    }
}

此问题通常与在 CLI 环境中加载 xdebug 有关。(是否启用 xdebug 并不重要。

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

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

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

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

可能减慢作曲家速度的因素:

  • 如前所述,xdebug会影响作曲家的性能。运行composer diagnose也会警告您这一点。

  • 运行update而不是install。人们往往只是不停地跑update。这使得 Composer 经历了整个依赖项解析过程,无论是否有任何更改。当您运行 install 时,Composer 直接从您的 .lock 文件中获取需求,跳过依赖关系解析过程。应仅在应用程序的开发生命周期内运行update。即便如此,它也不是你通常必须每天运行的东西。

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

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

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

每当我运行作曲家安装或更新时,仅获取 https://packagist.org/packages.json 文件就花费了 10 多秒。最终我发现问题与IPv6有关,因为从IPv4站点获取文件不到一秒钟。
问题是我的ISP不支持IPv6,但我在我的以太网属性中启用了它。在我取消选中网络设置中的Internet Protocol Version 6 (TCP/IPv6)后,安装/更新速度大大提高(从 200+ 秒下降到 10 秒)

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

您应该检查是否可以使用 Satis。这样,您可以准备自己的软件的ZIP并下载它,就像Github上托管的东西一样(它有一个API供Composer使用,即使它们没有明确准备,也可以下载ZIP)。

我在内存不足的虚拟机上运行 Symfony2 时遇到了这个问题。我增加了机器的内存,它得到了极大的改善。您可以检查系统上的内存,看看是否可以升级。

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

我的解决方案 WINDOWS 10 x 64 位 WAMP 用户与拉拉维尔,经过数周缓慢的作曲家更新和作曲家要求

你使用需要一个名为cacert.pem的东西

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

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

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

找到一个名为curl.cainfo 和 opensssl.cafile

将您的路径放到此文件 - 请参阅我案例中的示例:

curl.cainfo="C:wamp64cacert.pem"

openssl.cafile="C:wamp64cacert.pem"

在您之前搜索的所有 PHP.ini 文件上执行此操作,在所有文件中!

好的重新启动服务器,这对我有用,希望你我希望之前有人会发表此评论!所以我不会花 2 周时间修复它

另称

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

这在HTTPS上建立连接也运行这个

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

事实上,xdebug肯定会减慢速度。 卸载 xdebug 并不理想。 一个不错的选择是使用 HHVM 并将其置于作曲家职责中。

安装 HHVM 非常轻松,HHVM 本身比 PHP5 快得多。 这是一个双赢 - YMMV,但即使 xdebug 不在图片中,我在作曲家使用中也获得了近 5 倍的速度提升(诚然,在眼球测功机上)。

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

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

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

由于

启用了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-

相关内容

  • 没有找到相关文章

最新更新