web-dev-qa-db-ja.com

--prefer-distフラグにもかかわらず、composer依存関係の更新が遅い

変更がない場合でも、composer依存関係の更新に最大2分かかるのはなぜですか?

人気の提案--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:[email protected]/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"
        }
    }
}
60
Jonathan

この問題は、多くの場合、CLI環境にロードされているxdebugに関連しています。 (xdebugが有効かどうかは関係ありません。)

Followincコマンドのいずれかを使用して、xdebugが有効になっているかどうかを確認できます。

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

最大限の冗長性とプロファイリング情報を有効にすると、どのような操作に時間がかかるかについての詳細情報を取得できます。 (パッケージを更新する場合は、installpdateに置き換えてください。)

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

Composerの速度を低下させる要因:

  • 指摘したように、xdebugはComposerのパフォーマンスに影響を与える可能性があります。 composer diagnoseを実行すると、これについても警告されます。

  • updateの代わりにinstallを実行します。人々は頻繁にupdateを常に実行するだけです。これにより、Composer=依存関係の解決プロセス全体が、何か変更があったかどうかに関係なく行われます。installを実行すると、Composer依存関係解決プロセスをスキップして、アプリケーションの開発ライフサイクル中にのみupdateを実行する必要があります。それでも、通常は毎日実行する必要はありません。

  • 自分で頻繁に更新する特定の依存関係がある場合は、代わりにcomposer update vendor/package --with-dependenciesを実行してプロセスを簡素化することができます。

  • minimum-stabilitydevに設定します。これにより、依存関係リゾルバーが考慮しなければならない可能性の量が大幅に広がります。他に選択肢がない場合を除き、minimum-stabilitydevに下げることはほとんどありません。一時的にインライン@devフラグを使用するなど、代替案を検討してください。

20
alcohol

問題は解決されたようですが、これは誰かを助けるかもしれません。

composerインストールまたは更新を実行するたびに、 https://packagist.org/packages.json ファイルを取得するのに10秒以上かかりました。 IPv4サイトからファイルを取得するのに1秒もかからなかったため、問題はIPv6に関連していたことがわかりました。
問題は、ISPがIPv6をサポートしていないことですが、イーサネットプロパティでIPv6を有効にしていました。ネットワーク設定でInternet Protocol Version 6 (TCP/IPv6)のチェックを外した後、インストール/更新の速度が大幅に改善されました(200秒以上から10のようになりました)

4
Rai

Symfony2を低メモリでVMで実行しているときにこの問題が発生しました。マシンのメモリを増やして大幅に改善しました。システムのメモリを確認し、アップグレードできるかどうか確認してください。 。

3
John Sampson

プライベートリポジトリを使用しています。これにより、含めるバージョンのzipバージョンをダウンロードできなくなりますが、リポジトリを複製する必要があります。さらに、必要なバージョンを見つけるためにリポジトリ全体をスキャンする必要がある場合があります。

Satisの使用がオプションかどうかを確認する必要があります。そうすれば、Githubでホストされているものと同じように、独自のソフトウェアのZIPを準備してダウンロードできます(これには、Composer明示的に準備)。

2
Sven

composer updateで同じ問題が発生しました。composer selfupdateを使用してcomposer自体を最新バージョンに更新しましたが、速度は許容範囲になりました。

1
ako

実際、xdebugは確かに速度を低下させます。ただし、xdebugのアンインストールは理想的ではありません。良いオプションは、HHVMを使用してcomposer duty。

HHVMのインストールは非常に簡単で、HHVM自体はPHP5よりもはるかに高速です。ダブルウィンです-YMMVですが、xdebugが写真に含まれていなくても、composerの使用法で5倍近くの速度向上(確かに眼球ダイノで)を得ました。 。

OS Xを使用している場合は、次のリンクが役立つ場合があります(この問題について書いたブログ記事)。

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

1
Saeven

Zipおよびunzipがインストールされているかどうかを確認してください。欠落している場合、Composerは、zip形式のリリースをダウンロードする代わりに、リポジトリを複製します。

0
Stian S

precedence :: ffff:0:0/96 100を/etc/gai.confファイルに追加して、アップデートを試してみました。

0
Lasith Niroshan