Dlaczego PHP Composer działa tak wolno?

99

Dlaczego PHP Composer działa tak wolno, skoro wszystko, co robię, to inicjowanie projektu bez zależności? Oto polecenia, które wykonuję:

composer init

<krok przez tworzenie pliku composer.json, zdefiniuj 0 zerowych zależności>

composer install

Poczekaj 3 minuty (bez przesady).

Wszystko, co kompozytor musi zrobić, to wciągnąć autoloader i stworzyć /vendor, więc dlaczego trwa to tak długo? A skoro o tym mowa, dlaczego ten krok się nie dzieje composer init?

Czy istnieje opcja konfiguracji, której mogę użyć, aby pobrać buforowany autloader i dostawcę init?

AgmLauncher
źródło
1
A poważniej: czy zaktualizowałeś swojego kompozytora w ciągu ostatnich 30 dni? W zeszłym miesiącu nastąpiła znaczna poprawa wydajności kodu
Mark Baker,
Zacząłem compose installponad 5 minut temu i jeszcze się nie skończył. Composer version 1.0-dev (07c644ac229a21df80180598d8bb9aaba232eecb) 2015-02-03 12:51:10. Może nie jest to najnowsza wersja, ale wciąż nowsza niż twój mainframe IBM ;-)
axiac,
Potwierdź, że to wszystkocomposer self-update
sjagr
Zaktualizowałem to mniej więcej w zeszłym tygodniu.
AgmLauncher,
Zmagałem się z niewiarygodnie powolną aktualizacją i aktualizacją kompozytora. Zajmuje więcej niż 15 minut, a następnie rzuca wyjątki. Zmieniłem serwer DNS routera (z Google na własny ISP) i kompozytor działał jak marzenie.
Gordon Hickley,

Odpowiedzi:

43

Wyłącz także Xdebug . Xdebug może spowodować, że Composer potrwa kilka minut, nawet jeśli uruchomisz polecenie tak proste, jak composer --version.

adjco
źródło
1
To faktycznie okazało się moim problemem. Xdebug sprawia, że ​​Composer działa bardzo wolno.
AgmLauncher
Spróbuj użyć hirak / prestissimo. Jest to wtyczka do kompozytora, która pomaga pobierać pakiety w szybkim tempie. link
Ritesh Chitrakar
3
W czasie pisania miałem takie same wyniki z debugowaniem lub bez, ponieważ w 2020/2019 kompozytor automatycznie wyłączał xdebug podczas uruchamiania, mimo że instalacja yii2-starter-kit zajęła około 200 sekund ze wszystkimi bibliotekami, czy to w / wo xdebug, więc ta odpowiedź staje się nieaktualna
FantomX1
Widziałem to, podciągnąłem mój debugger. Okazało się, że chociaż xdebug jest skonfigurowany tylko dla FPM, CLI go zainicjował, a moje IDE czekało na mnie w punkcie przerwania. Uderz kontynuuj, a kompozytor natychmiast powrócił.
ppostma1
378

Ponieważ Composer jest implementowany przez file_get_contents(). To nie ma optymalizacji TCP, nie ma utrzymywania aktywności, nie ma multipleksowania itp.

Stworzyłem wtyczkę Composer do równoległego pobierania pakietów: https://packagist.org/packages/hirak/prestissimo

$ composer global wymaga hirak / prestissimo

Proszę, spróbuj. W moim środowisku composer installstaje się 10 razy szybszy.

hiraku
źródło
Wow, czas instalacji nowego projektu laravel minął od 124 sekund do zaledwie 21 sekund. Kocham to!
cornips
7
Dobra wiadomość: najwyraźniej zostało to połączone w Composer 2 w styczniu 2019: github.com/composer/composer/pull/7904
Chuck Le Butt
@ChuckLeButt, ale zwolnienie wciąż jest niewidoczne :(
hejdav
Dzięki, stary. Jest 20x szybsze.
Ilyas karim
61
  1. Upewnij się, że masz najnowszą wersję Composera.
  2. Zainstaluj w trybie szczegółowym, dodając na przykład -vvv composer global require "squizlabs/php_codesniffer=*" -vvv
  3. Jeśli jesteś w stanie dowiedzieć się, gdzie Composer zmaga się ze spowolnieniem, na przykład mój blokował się na 5 minut podczas pobierania pakietów. Pobranie pliku o rozmiarze 20 kB przy połączeniu 50 Mbit / s zajęło> 5 minut. Było to spowodowane tym, że pobierał pakiety z packagist przy użyciu protokołu HTTP, a nie HTTPS. Wprowadzenie tych zmian w konfiguracji rozwiązało mój problem: composer config --global repo.packagist composer https://packagist.org
sgr12
źródło
3
Jestem nowym kompozytorem i próbuję to naprawić przez 2 dni, po przeczytaniu twojego komentarza i dodaniu -vvv, w końcu zadziałało. 1000 głosów poparcia
Huy Trịnh
# 3 rozwiązał to za mnie. Jesteś teraz moim bohaterem. Od dłuższego czasu martwiłem się, dlaczego jest tak wolny i działa tylko na niektórych połączeniach internetowych. Dzięki!
Andreas Schantl
composer config --global repo.packagist composer https://packagist.org co to było! Niesamowite! 🏆
Rishi Kulshreshtha
13

To samo tutaj. Więcej informacji uzyskasz za pomocą polecenia „composer install --profile -vvv”. W moim przypadku pobranie kilku plików JSON zajmuje dużo czasu. Są zapisywane w pamięci podręcznej na moim serwerze, ale nadal są pobierane przy każdym wywołaniu aktualizacji / instalacji Composera.

... 30 minut później ...

Wygląda na to, że wystąpił problem z wydajnością @ packagist.org. Teraz instalacja Composera przebiega w ciągu 2 sekund! Pobrane pliki JSON są odpowiednio buforowane.

ppan
źródło
1
„Są zapisywane w pamięci podręcznej na moim serwerze, ale nadal są pobierane przy każdym wywołaniu aktualizacji / instalacji kompozytora” TO !! Czy znalazłeś rozwiązanie tego problemu? Mam wolne łącze i strasznie to widzieć.
lud
9

Miałem do czynienia z tym problemem i rzuciło mnie to na krzywdę, ponieważ nie mam zainstalowanego nigdzie Xdebug na moim komputerze. Okazuje się, że były to awarie trybu adresowania IPv6 . Więc aby przetestować, pobiegłem

curl --ipv4 'https://packagist.org/packages.json'
curl --ipv6 'https://packagist.org/packages.json'

IPv4 przeszedł, ale IPv6 zawiódł. W końcu powinieneś sprawdzić, dlaczego twój stos sieciowy go nie obsługuje, ale w moim przypadku zdecydowałem się po prostu dać pierwszeństwo ruchowi IPv4, dopóki nie będę mógł tego rozwiązać. W CentOS utworzyłem / zmodyfikowałem plik /etc/gai.conf i umieściłem w nim:

label       ::1/128        0
label       ::/0           1
label       2002::/16      2
label       ::/96          3
label       ::ffff:0:0/96  4
precedence  ::1/128        50
precedence  ::/0           40
precedence  2002::/16      30
precedence  ::/96          20
precedence  ::ffff:0:0/96  100

W Ubuntu możesz również edytować ten plik i odkomentować wiersz

precedence ::ffff:0:0/96  100

Źródło w Centrum społeczności Rackspace

Aaron Chamberlain
źródło
Na marginesie, nie wydawało mi się to osobiście pomagać, chociaż będę musiał to powtórzyć, aby potwierdzić wszystkie opcje, które z nich mogą być przyczyną.
FantomX1
@ FentomX1 Przykro mi to słyszeć. Dlatego zamieściłem test na górze. Jeśli wykonujesz oba testy curl i łączysz się, to oczywiście zmiany nie powinny być wprowadzane, ponieważ twoja sieć jest poprawnie skonfigurowana.
Aaron Chamberlain
1
Znalazłem krótki film na YouTube pokazujący, jak to zrobić w systemie Windows 10. Rozwiązało to mój problem. youtube.com/watch?v=63Lt_vlNWLc
Marcus
5

Na Ubuntu Xenial 16.04 VPS musisz wykonać następujące czynności:

sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf"
composer global require hirak/prestissimo

Konfiguruje IPv4 jako preferowany w stosunku do IPv6.

/server/93717/setting-ipv4-as-preferred-protocol-over-ipv6

Liam Mitchell
źródło
Odkąd zainstalowałem prestissimo, szybkość mojego kompozytora była doskonała.
Big Tree
3
Mogę potwierdzić, że to rozwiązanie działa nawet na ubuntu 18.04LTS
mwangaben
Dodaj wyjaśnienie do swojej odpowiedzi, aby inni mogli się z niej nauczyć. Co robi ta pierwsza linijka?
Nico Haase
@NicoHaase Jeśli spojrzysz na sygnatury czasowe, ta odpowiedź jest w rzeczywistości odpowiedzią na opisany przeze mnie problem, ale nie umieścili tego jako komentarza. W każdym razie włączyłem to do mojej odpowiedzi. Wygląda na to, że packagist woli używać IPV6, ale niektóre sieci nadal nie działają z nim dobrze. Pierwsza linia sprawia, że ​​twój Linux Machine preferuje adresy IPv4 i szuka ich w pierwszej kolejności.
Aaron Chamberlain
1

W moim przypadku wersja Composer, którą używałem, była przestarzała. Po zaktualizowaniu samej wersji kompozytora problem zniknął.

Aby zaktualizować wersję kompozytora, uruchom

composer self-update

a następnie wymagaj pakietu kompozytora i gotowe.

composer require "<package-name>"
sh6210
źródło
sudo? root? czemu ?
Mohamed Elbahja
przepraszam bracie, dodaj sudo, jeśli masz problemy z pozwoleniami.
sh6210
czy też powinieneś naprawić tryb pliku i uprawnienia właściciela / grupy? zamiast po prostu uruchamiać SUDO! nie wiedząc, co to oznacza? zdecydowanie nie FIX.
Mohamed Elbahja
oczywiście możesz rozwiązać problem z uprawnieniami właściciela / grupy, uruchamiając polecenie „chown”, ale możesz to zrobić za jednym razem. Moim głównym celem było pokazanie rozwiązania w najprostszy sposób z mojego punktu widzenia. Jednak przepraszam, jeśli moje słowa nie mają dla ciebie żadnego sensu.
sh6210
@ sh6210 Nie zachęcaj do używania sudo podczas korzystania z kompozytora. Zakładając, że „może” permissionproblem jest uprzedzeniem.
dbf
0

Jeśli którakolwiek z poprzednich odpowiedzi nie działa, sprawdź, czy Twoja zapora zezwala na TCP_OUT na porcie 9418.

Zabezpieczenia mojego firewalla były zbyt ostre. Spowodowało to, że Composer trwał tak długo, że nigdy nie otrzymałem żadnego limitu czasu ani wskazania, że ​​port jest zablokowany.

gidomanders
źródło
Czy Twój procesor był zajęty podczas aktualizacji?
Jewgienij Afanasjew
0

Mój był powolny podczas pobierania plików json z powodu programu antywirusowego. Niektóre programy antywirusowe skanują cały ruch sieciowy i mogą wolno analizować pliki json. Spróbuj wyłączyć AV podczas działania programu Composer.

Dima L.
źródło
0

Edycja: Wniosek: żadne rozwiązanie nie jest tutaj wymienione lub ogólnie nie wydaje się być kuloodporne. Co ostatecznie przyczynia się zwykle za pomocą kompozytora stopniowo, wymagające lub usuwając tylko jeden pakiet naraz używając composer require, composer removekomendy, również tyczy dodawania „specyficzny zakaz zależność” ustawienie, każda biblioteka może być dodany / usunięty przez wzgląd na niego przeredagowywania / odświeżenie konfiguracji pamięci podręcznej blokady composer.json.

Grupowanie moich doświadczeń z odpowiedziami z tego miejsca iz podanego linku.

Wcześniej wypróbowałem wszystkie rozwiązania wymienione w tym pytaniu do tej pory. Jednak nadal mi to nie pomogło, chociaż próbowałem / zauważyłem, że instalacja jakiejkolwiek innej pojedynczej biblioteki była znacznie szybka, więc zacząłem badać biblioteki jedna po drugiej, co mogło spowodować wąskie gardło.

1) TAK I znalazłem to jako oszustwo kodowe,"codeception/codeception": "2.4.0",

Samo zajęło to prawie 200 sekund, chociaż uruchomienie go razem z innymi bibliotekami wydawało się czasami działać prawie 12 minut. Co więcej, kompozytor nie wydaje się odzwierciedlać czasu rzeczywistego, gdy po zainicjowaniu przez 20 sekund wypuszcza go na 0,35 sekundy i tak dalej.

[374.9MiB/173.14s]     39/45:   https://codeload.github.com/sebastianbergmann/php-text-template/legacy.zip/31f8b717e51d9a2afca6c9f046f5d69fc27c8686
[374.9MiB/173.16s]     40/45:   https://codeload.github.com/sebastianbergmann/diff/legacy.zip/720fcc7e9b5cf384ea68d9d930d480907a0c1a29
[374.9MiB/173.17s]     41/45:   https://codeload.github.com/sebastianbergmann/exporter/legacy.zip/68609e1261d215ea5b21b7987539cbfbe156ec3e
[374.9MiB/173.19s]     42/45:   https://codeload.github.com/sebastianbergmann/phpunit-mock-objects/legacy.zip/f9756fd4f43f014cb2dca98deeaaa8ce5500a36e
[374.9MiB/173.20s]     43/45:   https://codeload.github.com/sebastianbergmann/recursion-context/legacy.zip/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8
[374.9MiB/173.23s]     44/45:   https://codeload.github.com/sebastianbergmann/php-code-coverage/legacy.zip/4cab20a326d14de7575a8e235c70d879b569a57a
[374.9MiB/173.24s]     45/45:   https://codeload.github.com/doctrine/instantiator/legacy.zip/ae466f726242e637cebdd526a7d991b9433bacf1
[374.9MiB/173.24s]     Finished: success: 45, skipped: 0, failure: 0, total: 45
[374.8MiB/173.25s] Analyzed 6622 packages to resolve dependencies
[374.8MiB/173.25s] Analyzed 435842 rules to resolve dependencies
[374.8MiB/173.25s] Package operations: 54 installs, 0 updates, 0 removals
[374.8MiB/173.26s] Installs: sebastian/recursion-context:3.0.0, sebastian/exporter:3.1.2, doctrine/instantiator:1.3.0, phpunit/php-text-template:1.2.1, phpunit/phpunit-mock-objects:6.1.2, codeception/stub:1.0.4, sebastian/diff:3.0.2, sebastian/comparator:3.0.2, theseer/tokenizer:1.1.3, sebastian/version:2.0.1, sebastian/environment:3.1.0, sebastian/code-unit-reverse-lookup:1.0.1, phpunit/php-token-stream:3.1.1, phpunit/php-file-iterator:1.4.5, phpunit/php-code-coverage:6.0.5, sebastian/object-reflector:1.1.1, sebastian/object-enumerator:3.0.3, sebastian/global-state:2.0.0, phpunit/php-timer:2.1.2, symfony/polyfill-ctype:v1.17.0, webmozart/assert:1.8.0, phpdocumentor/reflection-common:2.1.0, phpdocumentor/type-resolver:1.1.0, phpdocumentor/reflection-docblock:5.1.0, phpspec/prophecy:v1.10.3, myclabs/deep-copy:1.9.5, sebastian/resource-operations:1.0.0, phar-io/version:1.0.1, phar-io/manifest:1.0.1, phpunit/phpunit:7.1.5, codeception/phpunit-wrapper:7.6.1, symfony/yaml:v4.4.8, behat/gherkin:v4.6.2, symfony/polyfill-mbstring:v1.17.0, symfony/dom-crawler:v4.4.8, symfony/css-selector:v4.4.8, symfony/browser-kit:v4.4.8, symfony/event-dispatcher-contracts:v1.1.7, psr/container:1.0.0, symfony/event-dispatcher:v4.4.8, symfony/service-contracts:v2.0.1, symfony/polyfill-php73:v1.17.0, symfony/console:v4.4.8, symfony/finder:v4.4.8, ralouphie/getallheaders:3.0.3, psr/http-message:1.0.1, guzzlehttp/psr7:1.6.1, guzzlehttp/promises:v1.3.1, symfony/polyfill-php72:v1.17.0, symfony/polyfill-intl-idn:v1.17.0, guzzlehttp/guzzle:6.5.3, symfony/process:v4.4.8, facebook/webdriver:1.7.1, codeception/codeception:2.4.0
[374.8MiB/173.28s]   - Installing sebastian/recursion-context (3.0.0): [374.9MiB/173.28s] Loading from cache[374.9MiB/173.28s]
[374.9MiB/173.28s]  Extracting archive[374.9MiB/173.51s]   - Installing sebastian/exporter (3.1.2): [374.9MiB/173.52s] Loading from cache[374.9MiB/173.52s]
[374.9MiB/173.52s]  Extracting archive[374.9MiB/173.75s]   - Installing doctrine/instantiator (1.3.0): [374.9MiB/173.76s] Loading from cache[374.9MiB/173.76s]
[374.9MiB/173.76s]  Extracting archive[374.9MiB/174.00s]   - Installing phpunit/php-text-template (1.2.1): [374.9MiB/174.00s] Loading from cache[374.9MiB/174.00s]
[374.9MiB/174.00s]  Extracting archive[374.9MiB/174.23s]   - Installing phpunit/phpunit-mock-objects (6.1.2): [374.9MiB/174.23s] Loading from cache[374.9MiB/174.23s]
[374.9MiB/174.23s]  Extracting archive[374.9MiB/174.55s]   - Installing codeception/stub (1.0.4): [374.9MiB/174.56s] Loading from cache[374.9MiB/174.56s]
[374.9MiB/174.56s]  Extracting archive[374.9MiB/174.80s]   - Installing sebastian/diff (3.0.2): [374.9MiB/174.80s] Loading from cache[374.9MiB/174.80s]
[374.9MiB/174.80s]  Extracting archive[374.9MiB/175.07s]   - Installing sebastian/comparator (3.0.2): [374.9MiB/175.07s] Loading from cache[374.9MiB/175.07s]
[374.9MiB/175.07s]  Extracting archive[374.9MiB/175.33s]   - Installing theseer/tokenizer (1.1.3): [374.9MiB/175.33s] Loading from cache[374.9MiB/175.33s]

Bieg przed

 Problem 1
    - Installation request for codeception/codeception 2.4.0 -> satisfiable by codeception/codeception[2.4.0].
    - Conclusion: remove symfony/finder v5.0.8
    - Conclusion: don't install symfony/finder v5.0.8
    - codeception/codeception 2.4.0 requires symfony/finder >=2.7 <5.0 -> satisfiable by symfony/finder[v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.49, v2.7.5, v2.7.50, v2.7.51, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.43, v2.8.44, v2.8.45, v2.8.46, v2.8.47, v2.8.48, v2.8.49, v2.8.5, v2.8.50, v2.8.52, v2.8.6, v2.8.7, v2.8.8, v2.8.9, v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.5, v3.0.6, v3.0.7, v3.0.8, v3.0.9, v3.1.0, v3.1.1, v3.1.10, v3.1.2, v3.1.3, v3.1.4, v3.1.5, v3.1.6, v3.1.7, v3.1.8, v3.1.9, v3.2.0, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.18, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.13, v3.4.14, v3.4.15, v3.4.16, v3.4.17, v3.4.18, v3.4.19, v3.4.2, v3.4.20, v3.4.21, v3.4.22, v3.4.23, v3.4.24, v3.4.25, v3.4.26, v3.4.27, v3.4.28, v3.4.29, v3.4.3, v3.4.30, v3.4.31, v3.4.32, v3.4.33, v3.4.34, v3.4.35, v3.4.36, v3.4.37, v3.4.38, v3.4.39, v3.4.4, v3.4.40, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9, v4.0.0, v4.0.1, v4.0.10, v4.0.11, v4.0.12, v4.0.13, v4.0.14, v4.0.15, v4.0.2, v4.0.3, v4.0.4, v4.0.5, v4.0.6, v4.0.7, v4.0.8, v4.0.9, v4.1.0, v4.1.1, v4.1.10, v4.1.11, v4.1.12, v4.1.2, v4.1.3, v4.1.4, v4.1.5, v4.1.6, v4.1.7, v4.1.8, v4.1.9, v4.2.0, v4.2.1, v4.2.10, v4.2.11, v4.2.12, v4.2.2, v4.2.3, v4.2.4, v4.2.5, v4.2.6, v4.2.7, v4.2.8, v4.2.9, v4.3.0, v4.3.1, v4.3.10, v4.3.11, v4.3.2, v4.3.3, v4.3.4, v4.3.5, v4.3.6, v4.3.7, v4.3.8, v4.3.9, v4.4.0, v4.4.1, v4.4.2, v4.4.3, v4.4.4, v4.4.5, v4.4.6, v4.4.7, v4.4.8].
    - Can only install one of: symfony/finder[v2.7.0, v5.0.8].
    - Can only install one of: symfony/finder[v2.7.1, v5.0.8].
    - Can only install one of: symfony/finder[v2.7.10, v5.0.8].
    - Can only install one of: symfony/finder[v2.7.11, v5.0.8].

2) TAK Przy okazji, prestissimo jak już wspomniałem zostało już zastosowane i wydawało się pomóc, ponieważ na innym bardzo szybkim komputerze, który ma znacznie szybszy internet bez kodekodowania, instalacja zajęła 5 razy więcej, 518 sekund, a być może z powodu prestissimo lub innych porad tutaj zajęło to 110 sekund.

composer global require hirak/prestissimo

3) TAK Windows działa wolno, podobnie jak foldery zwirtualizowane od Windows do Linux. Uruchamianie poza folderem współdzielonym w systemie Linux wydawało się przyspieszać go około dwukrotnie. Chociaż może to być spowodowane pamięcią podręczną.

4) NIE

    "process-timeout": 1800,

jest na pojedynczy proces, taki jak git checkout i nie wydawał się wcale pomagać, nawet ustawiony na 10s, ponieważ był już znacznie duży. Może pomaga tylko wtedy, gdy następuje całkowita przerwa w działaniu jakiejś usługi.

5) TAK instalacja z usuniętym lub pustym folderem dostawcy = świeżo wydaje się być znacznie szybsza (około 1 minuty i więcej), niż dodawanie do plików dostawcy i innych istniejących w nim pakietów

6) TAK wydaje się być wolniejsze na Ubuntu18 apache2 bez własnego obrazu xdebug, niż na Debian10 php-fpm, nawet z xdebug na Yii2-starter-kit, z jakiegoś powodu około dwa razy wolniej, cat /etc/*-releaseaby dowiedzieć się o dystrybucji Linuksa

7) NIE php -ddefault_socket_timeout=1 /usr/local/bin/composer --verbose --profile install wspomniane tutaj NIE wydaje się pomagać Powolne aktualizowanie zależności kompozytora, pomimo flagi --prefer-dist ani wspomnianego protokołu IP v6 v4. Chociaż może to być spowodowane pamięcią podręczną.

8) NIE Instalowanie zip nie wydaje się pomagać, instalacja PHP miała preinstalowany zip, nadal narzekał, że nie był tam, dopóki nie został zainstalowany jako pakiety Linux, ale spowolnił proces w pojedynczej symulacji o 100 sekund z 650 do 750 sekund. Te same warunki środowiskowe. As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension https://stackoverflow.com/a/51208804/3419535 testowanie w warunkach bez pamięci podręcznej--no-cache

9) TAK usuń "minimum-stability ": "dev",

10) TAK, użyj prefer-dist composer require robmorgan/phinx:@dev --prefer-dist -vvv --profile (użycie polecenia require jako przykładu, ponieważ użycie częściowych poleceń wymagania, jak wspomniano powyżej, zamiast pełnej instalacji za pomocą polecenia instalacji, wydaje się być jednym z najbardziej znaczących przyspieszeń, a ponadto wymaga @ dev- podobnie jak w poprzednich punktach, gdy minimum-stability: devnie jest stosowane generalnie do wszystkich zależności, wydaje się być nieszkodliwe przy użyciu na podstawie przypadku (zależności))

FantomX1
źródło
Jak to się ma do zadanego pytania? Zgodnie z opisem problemu, w problemie OPs nie ma ani jednej zależności
Nico Haase
Problem powinien być rozwiązany generalnie, próbowałem podsumować wszystko, co mi pomogło, i dodałem kilka innych rozwiązań z innego miejsca. Nie zawsze tylko o to, o co prosi pytający, tutaj są tysiące innych scenariuszy użytkowników.Większość odpowiedzi jest ogólna. Wymaganie Composer jest w zasadzie tylko częścią instalacji Composer. Tylko dlatego, że użyłem w odpowiedzi również słowa / polecenia „wymagają”, nie oznacza to, że nie dotyczy to również instalacji, ale jeśli chcesz, mogę usunąć to słowo. „Nie ma na liście ani jednej zależności”, ale jak to zmienia cokolwiek, instalacja Composera to nic innego jak zależności.
FantomX1
Kilka minut później poszedłem z 1 punktu do -1, ponieważ odpowiedziałem, może dlatego, że wcześniej na mnie zagłosowałeś. Powiedz mi, że wybrana odpowiedź prestistimo lub użycie ipv 6 lub wyłączenie xdebug nie jest również ogólne i nie ma zastosowania do konkretnego kompozytora wymaga polecenia. Przepraszam za kilka pośpiesznych zmian, ale używam go również jako osobistej wiki i nawet nie wymieniłem konkretnej nazwy zależności, ale ją dostosuję. Jeśli nie podoba ci się, że popełniłem literówkę, wspomnij o tym, ale brak bycia ogólnym nie ma sensu. Użyłem polecenia „require” jako odniesienia, ponieważ użycie „require” jest jednym z samych rozwiązań.
FantomX1
1
OP zapytał, dlaczego Composer jest powolny z zerowymi zależnościami - nawet jeśli twoja lista rzeczy może pomóc w wielu innych sytuacjach, nie widzę związku z zadanym pytaniem
Nico Haase
2
Prestissimo pomaga nawet w przypadku pustej listy wymagań - niektóre pliki są pobierane przez kompozytora niezależnie od listy zależności, więc pobieranie równoległe również tutaj pomoże.
rob006
0

krok 1

$ composer self-update

krok 2

$ composer clear-cache

krok 3

$ composer update
Yevgeniy Afanasyev
źródło
-1

Najlepszym sposobem, aby się tego dowiedzieć, jest uruchomienie aktualizacji / instalacji kompozytora z szczegółowością. composer {install / update} -vvv. Użycie flagi -h może ci pomóc w przyszłości

Edu
źródło
Proszę o wyjaśnienie. OP przeprowadza testy przy użyciu całkowicie pustej listy zależności
Nico Haase
-1

W przypadku, jeśli usunąłeś swój plik composer.lock, a następnie odszedł composer install, staje się zbyt wolny, aby pobrać zależności. Jeśli tak jest, użyj composer updatepolecenia, a wtedy może pomóc tobie lub innym.

NadZ
źródło