尽pipe–prefer-dist标志,更新composer php依赖关系缓慢

为什么我的composer php依赖关系需要两分钟才能更新 – 即使没有变化?

一个高调的答案build议增加--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相关(无论是否启用)。

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

 // unix php -m | grep xdebug // windows php -m | findstr xdebug 

更多信息通过启用最大的详细信息和分析信息,可以获得什么操作需要很长时间?

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

要么

 composer update --prefer-dist -vvv --profile 

可能会减慢作曲的因素:

  • 正如所指出的, xdebug可以影响Composer的性能。 运行composer diagnose也会警告你。

  • 运行update而不是install 。 人们往往只是不断update 。 这使得Composer能够完成整个依赖关系parsing过程,无论是否有任何改变。 运行install ,Composer直接从.lock文件获取需求,跳过依赖关系parsing过程。 您应该只在应用程序的开发生命周期中运行update 。 即使如此,这也不是你每天必须经常运行的东西。

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

  • 设置minimum-stability dev 。 这极大地扩展了依赖parsing器必须考虑的可能性的数量。 除非你绝对没有别的select,否则几乎不应该降低开发的minimum-stability 。 查看替代方法,例如暂时使用内联的@dev标志。

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

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

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

你应该检查是否使用Satis是一个选项。 这样,你可以准备自己的软件的ZIP并下载它,就像Github上托pipe的东西(它有一个API,这是由Composer使用,允许下载ZIP,即使他们没有明确准备)。

在内存不足的虚拟机上运行Symfony2时遇到此问题。 我增加了机器的内存,并大大提高了。 您可以检查系统上的内存,看看是否可以升级。

它不是关于你的xdebug扩展它关于你的xdebugs profiler.Disableconfiguration文件在你的php.inidebugging选项部分。

 xdebug.profiler_append = 0 xdebug.profiler_enable = 0 xdebug.profiler_enable_trigger = 0 

的确,xdebug肯定会放慢速度。 卸载xdebug并不理想。 一个好的select是使用HHVM,并把它作为composer php的责任。

安装HHVM是非常容易的,HHVM本身比PHP5快得多。 这是一个双赢的YMMV,但是即使xdebug不在图片中,我也会得到composer php使用的速度提高近5倍的速度(在眼球测功机上)。

如果你在OS X上,那么这个链接可能会有帮助(关于这个问题我写了博客文章):

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