Mengapa PHP Composer sangat lambat padahal yang saya lakukan hanyalah membuat proyek tanpa ketergantungan? Berikut perintah yang saya jalankan:
composer init
<langkah melalui pembuatan composer.json, definisikan 0 nol dependensi>
composer install
Tunggu 3 menit (jangan berlebihan).
Yang harus dilakukan komposer hanyalah menarik pemuat otomatis dan membuat /vendor
, jadi mengapa butuh waktu lama? Karena itu, mengapa langkah itu tidak terjadi composer init
?
Apakah ada opsi konfigurasi yang dapat saya gunakan untuk menarik autloader dan vendor yang di-cache init
?
php
composer-php
AgmLauncher
sumber
sumber
compose install
lebih dari 5 menit yang lalu dan belum selesai.Composer version 1.0-dev (07c644ac229a21df80180598d8bb9aaba232eecb) 2015-02-03 12:51:10
. Mungkin ini bukan versi terbaru tetapi masih lebih baru dari mainframe IBM Anda ;-)composer self-update
Jawaban:
Juga, nonaktifkan Xdebug . Xdebug dapat menyebabkan Komposer membutuhkan waktu beberapa menit bahkan saat menjalankan perintah sesederhana
composer --version
.sumber
Karena Komposer diimplementasikan oleh
file_get_contents()
. Itu tidak memiliki pengoptimalan TCP, tidak ada Keep-Alive, tidak ada multiplexing, dll.Saya membuat plugin Composer untuk mengunduh paket secara paralel: https://packagist.org/packages/hirak/prestissimo
Silakan mencobanya. Di lingkungan saya,
composer install
menjadi 10 kali lebih cepat.sumber
composer global require "squizlabs/php_codesniffer=*" -vvv
composer config --global repo.packagist composer https://packagist.org
sumber
composer config --global repo.packagist composer https://packagist.org
apa itu tadi! Hebat! 🏆Di sini sama. Dapatkan detail selengkapnya dengan "composer install --profile -vvv". Dalam kasus saya, perlu waktu lama untuk mengunduh beberapa file JSON. Mereka mendapatkan cache di server saya, tetapi mereka masih diunduh dengan setiap panggilan pembaruan / pemasangan Komposer.
... 30 menit kemudian ...
Sepertinya ada masalah kinerja @ packagist.org. Sekarang penginstalan Komposer berjalan dalam 2 detik! Dan file JSON yang diunduh disimpan dalam cache dengan benar.
sumber
Saya mengalami masalah ini, dan itu membuat saya bingung karena saya tidak menginstal Xdebug di mana pun di mesin saya. Ternyata itu adalah kegagalan mode pengalamatan IPv6 . Jadi untuk mengujinya saya lari
curl --ipv4 'https://packagist.org/packages.json' curl --ipv6 'https://packagist.org/packages.json'
IPv4 berhasil, tetapi IPv6 gagal. Pada akhirnya, Anda harus mencari tahu mengapa tumpukan jaringan Anda tidak mendukungnya, tetapi dalam kasus saya, saya memutuskan untuk hanya memberikan preferensi pada lalu lintas IPv4 sampai saya dapat mengatasinya. Di CentOS saya membuat / memodifikasi file /etc/gai.conf dan memasukkan yang berikut ini:
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
Di Ubuntu Anda juga dapat mengedit file itu dan menghapus komentar pada baris
precedence ::ffff:0:0/96 100
Sumber di Rackspace Community Hub
sumber
Di Ubuntu Xenial 16.04 VPS, Anda perlu melakukan hal berikut:
sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf" composer global require hirak/prestissimo
Ini mengkonfigurasi IPv4 sebagai pilihan daripada IPv6.
/server/93717/setting-ipv4-as-preferred-protocol-over-ipv6
sumber
Dalam kasus saya, versi komposer yang saya jalankan sudah ketinggalan zaman. Setelah memperbarui versi komposernya sendiri masalahnya hilang.
Untuk mengupdate versi komposer, jalankan
composer self-update
dan kemudian membutuhkan paket komposer dan selesai.
composer require "<package-name>"
sumber
permission
masalah adalah prasangka.Jika salah satu jawaban sebelumnya tidak berfungsi, periksa apakah firewall Anda mengizinkan TCP_OUT pada port 9418.
Keamanan firewall saya terlalu tajam. Ini menyebabkan Composer butuh waktu lama, saya tidak pernah mendapat waktu tunggu atau indikasi port diblokir.
sumber
Milik saya lambat saat mengunduh file json karena antivirus. Beberapa antivirus memindai semua lalu lintas web dan mungkin lambat dalam menganalisis file json. Coba nonaktifkan AV Anda saat menjalankan komposer.
sumber
Sunting: Kesimpulan: tidak ada solusi yang tercantum di sini atau umumnya tampaknya antipeluru. Apa yang pada akhirnya membantu biasanya menggunakan komposer secara bertahap, memerlukan atau menghapus hanya satu paket pada satu waktu menggunakan
composer require
,composer remove
perintah, juga berkaitan dengan penambahan setelan "khusus non-ketergantungan", pustaka apa pun dapat ditambahkan / dihapus untuk kepentingan pembaruan / menyegarkan konfigurasi cache kunci composer.json.Mengelompokkan pengalaman saya dengan jawaban dari sini dan dari terkait yang dimaksud.
Sebelumnya saya mencoba setiap solusi yang disebutkan dalam pertanyaan ini hingga saat ini. Namun, itu tetap tidak membantu saya, meskipun saya mencoba / memperhatikan bahwa menginstal pustaka tunggal lainnya sangat cepat, jadi saya terus menyelidiki perpustakaan satu per satu yang dapat menyebabkan leher botol.
1) YA Dan saya menemukannya sebagai codeception,
"codeception/codeception": "2.4.0",
Butuh waktu hampir 200 detik saja, meskipun menjalankannya bersama dengan perpustakaan lain kadang-kadang tampak berjalan hampir selama 12 menit. Selain itu, komposer tampaknya tidak mencerminkan waktu nyata ketika setelah memulai selama 20 detik ia mengeluarkannya berjalan 0,35 detik dan seterusnya.
[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]
Lari sebelumnya
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) YA Btw, prestissimo seperti yang saya sebutkan sudah diterapkan dan sepertinya membantu, seperti pada komputer lain yang sangat cepat yang memiliki internet jauh lebih cepat sama sekali tanpa codeception, instalasi memakan waktu 5 kali lebih banyak, 518 detik, sementara mungkin karena prestissimo atau saran lainnya di sini, butuh 110 detik.
composer global require hirak/prestissimo
3) YA Windows lambat, begitu juga folder tervirtualisasi dari Windows ke Linux. Menjalankan di luar folder bersama di dalam Linux sepertinya mempercepatnya sekitar dua kali. Padahal bisa jadi karena cache.
4) TIDAK
"process-timeout": 1800,
adalah per satu proses seperti git checkout dan tampaknya tidak membantu sama sekali bahkan disetel ke 10-an, karena itu sudah sangat besar. Ini mungkin membantu hanya jika ada pemadaman total beberapa layanan.
5) YA menginstal dengan folder vendor dihapus atau kosong = baru terlihat jauh lebih cepat (sekitar 1 menit dan lebih), daripada menambahkan ke file vendor dan paket lain yang ada di dalamnya
6) YES tampaknya lebih lambat pada Ubuntu18 apache2 tanpa gambar xdebug sendiri, daripada pada Debian10 php-fpm bahkan dengan xdebug di Yii2-starter-kit, untuk beberapa alasan sekitar dua kali lebih lambat,
cat /etc/*-release
untuk mengetahui distribusi Linux7) NO yang
php -ddefault_socket_timeout=1 /usr/local/bin/composer --verbose --profile install
disebutkan di sini tampaknya tidak membantu Pembaruan lambat dari dependensi composer, meskipun ada flag --prefer-dist atau ada protokol IP v6 v v4 yang disebutkan Meskipun itu mungkin karena cache.8) NO Instalasi zip sepertinya tidak membantu, instalasi PHP telah menginstal zip, masih mengeluh tidak ada sampai diinstal sebagai paket Linux tetapi itu membuat proses dalam simulasi tunggal lebih lambat 100 detik dari 650 hingga 750 detik. Kondisi lingkungan yang sama.
As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension
https://stackoverflow.com/a/51208804/3419535 menguji kondisi tanpa cache--no-cache
9) YA hapus
"minimum-stability ": "dev",
10) YES gunakan prefer-dist
composer require robmorgan/phinx:@dev --prefer-dist -vvv --profile
(menggunakan perintah require sebagai contoh, karena menggunakan perintah sebagian membutuhkan seperti yang disebutkan pertama di atas, alih-alih instalasi penuh melalui perintah instal, tampaknya menjadi salah satu percepatan paling signifikan, ditambah membutuhkan @ dev- seperti pada poin sebelumnya ketikaminimum-stability: dev
tidak diterapkan secara umum ke semua dependensi tampaknya tidak berbahaya jika digunakan pada basis per kasus (ketergantungan))sumber
Langkah 1
$ composer self-update
Langkah 2
langkah 3
sumber
Cara terbaik untuk mengetahuinya adalah menjalankan pembaruan / pemasangan komposer dengan verbositas. komposer {install / update} -vvv. Menggunakan bendera -h dapat membantu Anda di masa mendatang
sumber
Dalam kasus, Jika Anda telah menghapus file composer.lock Anda, dan kemudian pergi
composer install
terlalu lambat untuk mendownload dependensi. Jika ini masalahnya, gunakancomposer update
perintah dan kemudian itu dapat membantu Anda atau orang lain.sumber