[英]Slow updating of composer dependencies, despite --prefer-dist flag
為什么我的 Composer 依賴項最多需要兩分鍾才能更新,即使沒有更改?
一個流行的建議是附加--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
可能會降低 Composer 速度的因素:
正如所指出的, xdebug
會影響 Composer 的性能。 運行composer diagnose
也會警告你這一點。
運行update
而不是install
。 人們經常只是不斷地運行update
。 這使得 Composer 經歷了整個依賴解析過程,無論是否發生任何變化。 當您運行install
,Composer 直接從您的 .lock 文件中獲取需求,跳過依賴項解析過程。 您應該只在應用程序的開發生命周期內運行update
。 即便如此,這也不是您通常每天必須運行的東西。
如果您有自己經常更新的特定依賴項,您可以嘗試通過運行composer update vendor/package --with-dependencies
來簡化流程。
將minimum-stability
設置為dev
。 這極大地擴展了依賴解析器必須考慮的可能性。 除非您絕對別無選擇,否則您幾乎永遠不應該降低dev
的minimum-stability
。 尋找替代方案,例如臨時使用內聯@dev
標志。
似乎問題已解決,但這可能對某人有所幫助。
每當我運行 composer install 或 update 時,僅獲取https://packagist.org/packages.json文件就需要超過 10 秒的時間。 最終我發現問題與 IPv6 有關,因為從 IPv4 站點獲取文件只用了不到一秒鍾的時間。
問題是我的 ISP 不支持 IPv6,但我在以太網屬性中啟用了它。 在我的網絡設置中取消勾選Internet Protocol Version 6 (TCP/IPv6)
后,安裝/更新速度顯着提高(從 200+ 秒下降到 10 秒)
您正在使用私有存儲庫。 這將不允許下載您包含的版本的壓縮版本,但必須克隆存儲庫。 此外,可能必須掃描整個存儲庫才能找到所需的版本。
您應該檢查是否可以選擇使用 Satis。 這樣你就可以准備你自己的軟件的 ZIP 並下載它,就像 Github 上托管的東西一樣(它有一個 API,Composer 使用它來允許下載 ZIP,即使它們沒有明確准備)。
我在內存不足的 VM 上運行 Symfony2 時遇到了這個問題。 我增加了機器的內存,它大大改善了。 您可以檢查系統上的內存,看看它是否可以升級。
我對composer update
有同樣的問題,我使用composer selfupdate
將 composer 本身更新到最新版本,現在它的速度可以接受。
實際上,xdebug 肯定會減慢速度。 不過,卸載 xdebug 並不理想。 一個不錯的選擇是使用 HHVM 並將其置於作曲家的職責中。
安裝 HHVM 非常輕松,而且 HHVM 本身比 PHP5 快得多。 這是雙贏 - YMMV,但即使 xdebug 不在圖片中,我也會在作曲家使用中獲得近 5 倍的速度增加(在眼球測功機上)。
如果您使用的是 OS X,那么此鏈接可能會有所幫助(我寫的關於此事的博客文章):
檢查是否安裝了zip
和unzip
。 如果它們丟失,Composer 將克隆存儲庫而不是下載壓縮版本。
我在/etc/gai.conf文件中添加了precedence :: ffff:0:0/96 100並嘗試更新。
我的解決方案 WINDOWS 10 x 64 位 WAMP 用戶使用 Laravel,經過數周緩慢的作曲家更新和作曲家需要
你需要一個叫做 cacert.pem 的東西
https://curl.haxx.se/docs/caextract.html
然后將該文件粘貼到 wamp 主目錄 C:\\wamp64\\cacert.pem
然后在搜索選項卡中搜索 php.ini 在 sublime 或任何文本編輯器上打開所有具有該名稱的文件
找到一行名為 curl.cainfo 和 openssl.cafile
把你的路徑放到這個文件 - 請參閱我的案例中的示例:
curl.cainfo="C:\wamp64\cacert.pem"
和
openssl.cafile="C:\wamp64\cacert.pem"
在所有文件中對您之前搜索的所有 php.ini 文件執行此操作!
好的,重新啟動對我有用的服務器,希望對您有用,我希望之前有人會發表此評論! 所以我不會花 2 周時間修復它
也叫
composer config --global repo.packagist composer https://packagist.org
這使得 https 上的連接也運行這個
composer install --prefer-dist -vvv --profile
由於啟用了 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-
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.