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

Jon*_*han 62 php symfony composer-php

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

一个流行的建议是添加--prefer-dist标志,我已将其附加到我的命令:

php composer.phar update --prefer-dist
Run Code Online (Sandbox Code Playgroud)

但这没有区别.下面是我的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"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ich 95

此问题通常与__CODE__CLI环境中的lodaed(无论是否启用)有关.

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

// Unix
php -m | grep xdebug
// Windows
php -m | findstr xdebug
Run Code Online (Sandbox Code Playgroud)

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

composer install --prefer-dist -vvv --profile
Run Code Online (Sandbox Code Playgroud)

要么

// Unix
php -m | grep xdebug
// Windows
php -m | findstr xdebug
Run Code Online (Sandbox Code Playgroud)

  • 我没有安装xdebug与我的PHP和作曲家运行非常缓慢. (27认同)
  • 这让它变得更快,感谢你指出这一点 (2认同)
  • 在PHP 5.3.10中,来自symfony的composer.json内部具有快速连接,6核,ssd驱动器,充足的内存和4个额外的“ require”。“ composer update”从58秒缩短至46秒。:/ (2认同)
  • `--prefer-dist` 到底在做什么? (2认同)

alc*_*hol 20

可能减慢Composer速度的因素:

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

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

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

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

  • 您使用“安装”的建议解决了我的问题。谢谢 ! (2认同)

Rai*_*Rai 5

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

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

  • 我为这个问题找到的最佳答案是给 php 命令取别名并将套接字超时设置为荒谬的东西。`别名 php="php -d default_socket_timeout=1 -d xdebug.remote_enable=0"` (2认同)