変更がない場合でも、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"
}
}
}
この問題は、多くの場合、CLI環境にロードされているxdebugに関連しています。 (xdebugが有効かどうかは関係ありません。)
Followincコマンドのいずれかを使用して、xdebugが有効になっているかどうかを確認できます。
// Unix
php -m | grep xdebug
// Windows
php -m | findstr xdebug
最大限の冗長性とプロファイリング情報を有効にすると、どのような操作に時間がかかるかについての詳細情報を取得できます。 (パッケージを更新する場合は、installをpdateに置き換えてください。)
composer install --prefer-dist -vvv --profile
Composerの速度を低下させる要因:
指摘したように、xdebug
はComposerのパフォーマンスに影響を与える可能性があります。 composer diagnose
を実行すると、これについても警告されます。
update
の代わりにinstall
を実行します。人々は頻繁にupdate
を常に実行するだけです。これにより、Composer=依存関係の解決プロセス全体が、何か変更があったかどうかに関係なく行われます。install
を実行すると、Composer依存関係解決プロセスをスキップして、アプリケーションの開発ライフサイクル中にのみupdate
を実行する必要があります。それでも、通常は毎日実行する必要はありません。
自分で頻繁に更新する特定の依存関係がある場合は、代わりにcomposer update vendor/package --with-dependencies
を実行してプロセスを簡素化することができます。
minimum-stability
をdev
に設定します。これにより、依存関係リゾルバーが考慮しなければならない可能性の量が大幅に広がります。他に選択肢がない場合を除き、minimum-stability
をdev
に下げることはほとんどありません。一時的にインライン@dev
フラグを使用するなど、代替案を検討してください。
問題は解決されたようですが、これは誰かを助けるかもしれません。
composerインストールまたは更新を実行するたびに、 https://packagist.org/packages.json ファイルを取得するのに10秒以上かかりました。 IPv4サイトからファイルを取得するのに1秒もかからなかったため、問題はIPv6に関連していたことがわかりました。
問題は、ISPがIPv6をサポートしていないことですが、イーサネットプロパティでIPv6を有効にしていました。ネットワーク設定でInternet Protocol Version 6 (TCP/IPv6)
のチェックを外した後、インストール/更新の速度が大幅に改善されました(200秒以上から10のようになりました)
Symfony2を低メモリでVMで実行しているときにこの問題が発生しました。マシンのメモリを増やして大幅に改善しました。システムのメモリを確認し、アップグレードできるかどうか確認してください。 。
プライベートリポジトリを使用しています。これにより、含めるバージョンのzipバージョンをダウンロードできなくなりますが、リポジトリを複製する必要があります。さらに、必要なバージョンを見つけるためにリポジトリ全体をスキャンする必要がある場合があります。
Satisの使用がオプションかどうかを確認する必要があります。そうすれば、Githubでホストされているものと同じように、独自のソフトウェアのZIPを準備してダウンロードできます(これには、Composer明示的に準備)。
composer update
で同じ問題が発生しました。composer selfupdate
を使用してcomposer自体を最新バージョンに更新しましたが、速度は許容範囲になりました。
実際、xdebugは確かに速度を低下させます。ただし、xdebugのアンインストールは理想的ではありません。良いオプションは、HHVMを使用してcomposer duty。
HHVMのインストールは非常に簡単で、HHVM自体はPHP5よりもはるかに高速です。ダブルウィンです-YMMVですが、xdebugが写真に含まれていなくても、composerの使用法で5倍近くの速度向上(確かに眼球ダイノで)を得ました。 。
OS Xを使用している場合は、次のリンクが役立つ場合があります(この問題について書いたブログ記事)。
Zip
およびunzip
がインストールされているかどうかを確認してください。欠落している場合、Composerは、zip形式のリリースをダウンロードする代わりに、リポジトリを複製します。
precedence :: ffff:0:0/96 100を/etc/gai.confファイルに追加して、アップデートを試してみました。