Por que o PHP Composer é tão lento quando tudo o que faço é iniciar um projeto sem dependências? Aqui estão os comandos que executo:
composer init
<passo na criação do composer.json, defina 0 zero dependências>
composer install
Espere 3 minutos (não é exagero).
Tudo que o compositor precisa fazer é puxar um autoloader e criar /vendor
, então por que demora tanto? Por falar nisso, por que essa etapa não acontece composer init
?
Existe uma opção de configuração que posso usar para obter um autloader em cache e um fornecedor init
?
php
composer-php
AgmLauncher
fonte
fonte
compose install
mais de 5 minutos e ainda não foi concluído.Composer version 1.0-dev (07c644ac229a21df80180598d8bb9aaba232eecb) 2015-02-03 12:51:10
. Talvez não seja a versão mais recente, mas ainda é mais recente que seu mainframe IBM ;-)composer self-update
Respostas:
Além disso, desative o Xdebug . O Xdebug pode fazer com que o Composer demore minutos, mesmo ao executar um comando tão simples quanto
composer --version
.fonte
Porque o Composer é implementado por
file_get_contents()
. Isso não tem otimizações de TCP, Keep-Alive, sem multiplexação, etc.Criei um plugin do Composer para baixar pacotes em paralelo: https://packagist.org/packages/hirak/prestissimo
Por favor tente. No meu ambiente,
composer install
fica 10 vezes mais rápido.fonte
composer global require "squizlabs/php_codesniffer=*" -vvv
composer config --global repo.packagist composer https://packagist.org
fonte
composer config --global repo.packagist composer https://packagist.org
o que é que foi isso! Impressionante! 🏆O mesmo aqui. Obtenha mais detalhes com "composer install --profile -vvv". No meu caso, leva muito tempo para baixar alguns arquivos JSON. Eles são armazenados em cache no meu servidor, mas ainda são baixados com cada chamada de atualização / instalação do Composer.
... 30 minutos depois ...
Parece um problema de desempenho @ packagist.org. Agora a instalação do Composer é executada em 2 segundos! E os arquivos JSON baixados são armazenados em cache corretamente.
fonte
Eu estava tendo esse problema e ele estava me confundindo, já que não tenho o Xdebug instalado em qualquer lugar da minha máquina. Acontece que foram falhas no modo de endereçamento IPv6 . Então, para testar eu corri
O IPv4 foi aprovado, mas o IPv6 falhou. No final, você deve tentar descobrir por que sua pilha de rede não suporta isso, mas no meu caso, decidi apenas dar preferência ao tráfego IPv4 até que possa resolver isso. No CentOS eu criei / modifiquei o arquivo /etc/gai.conf e coloquei o seguinte:
No Ubuntu você também pode editar esse arquivo e descomentar a linha
Fonte no Rackspace Community Hub
fonte
No Ubuntu Xenial 16.04 VPS, você precisa fazer o seguinte:
Ele configura o IPv4 como preferencial em relação ao IPv6.
/server/93717/setting-ipv4-as-preferred-protocol-over-ipv6
fonte
No meu caso, a versão do compositor que eu estava executando era retroativa. Depois de atualizada a própria versão do compositor, o problema desapareceu.
Para atualizar a versão do compositor, execute
e, em seguida, solicite o pacote composer e pronto.
fonte
permission
problema é preconceito.Se alguma das respostas anteriores não funcionar, verifique se seu firewall permite TCP_OUT na porta 9418.
A segurança do meu firewall era muito forte. Isso fez com que o Composer demorasse tanto que nunca tive nenhum tempo limite ou indicação de que a porta estava bloqueada.
fonte
O meu estava lento ao baixar arquivos json por causa do antivírus. Alguns antivírus verificam todo o tráfego da web e podem ser lentos na análise de arquivos json. Tente desativar seu AV enquanto executa o composer.
fonte
A melhor maneira de descobrir é executando o composer update / install com detalhamento. composer {install / update} -vvv. Usar a sinalização -h pode ajudá-lo no futuro
fonte
Edit: Conclusão: nenhuma solução listada aqui ou geralmente parece ser à prova de balas. O que em última análise ajuda é geralmente usar o composer incrementalmente, exigindo ou removendo apenas um único pacote por vez usando
composer require
,composer remove
comando, também se refere à adição de qualquer configuração "não-dependente específica", qualquer biblioteca pode ser adicionada / removida para atualizar / atualizando a configuração do cache de bloqueio composer.json.Agrupando minha experiência com respostas daqui e do link em questão.
Antes eu tentei cada uma das menções de solução nesta questão até agora. No entanto, ainda não me ajudou, embora eu tenha tentado / percebido que instalar qualquer outra biblioteca única era consideravelmente rápido, então continuei investigando as bibliotecas uma por uma que poderiam causar o gargalo.
1) SIM E eu descobri que era codecepção,
"codeception/codeception": "2.4.0",
Demorou quase 200 segundos sozinho, embora rodá-lo junto com outras bibliotecas parecesse às vezes rodar quase 12 minutos. Além disso, o composer não parece refletir em tempo real quando, após iniciar por 20 segundos, ele executa 0,35s e assim por diante.
A corrida antes
2) SIM A propósito, prestissimo como mencionei já foi aplicado e pareceu ajudar, pois em outro computador muito rápido que tem uma internet muito mais rápida sem codecepção, a instalação demorou 5 vezes mais, 518 segundos, enquanto talvez devido a prestissimo ou outros conselhos aqui, demorou 110 segundos.
composer global require hirak/prestissimo
3) SIM, o Windows é lento, assim como as pastas virtualizadas do Windows ao Linux. Executar fora da pasta compartilhada dentro do Linux parecia acelerá-lo cerca de duas vezes. Embora possa ser devido ao cache.
4) NÃO
é feito por um único processo, como git checkout e não pareceu ajudar em nada, mesmo definido para 10s, pois já era consideravelmente grande. Talvez ajude apenas quando houver uma interrupção total de algum serviço.
5) SIM, instalar com uma pasta do fornecedor removida ou vazia = recentemente parece ser consideravelmente mais rápido (cerca de 1 minuto e mais), do que adicionar aos arquivos do fornecedor e outros pacotes existentes nele
6) SIM parece ser mais lento no Ubuntu18 apache2 sem a própria imagem do xdebug, do que no Debian10 php-fpm mesmo com o xdebug no Yii2-starter-kit, por alguma razão duas vezes mais lento,
cat /etc/*-release
para descobrir a distribuição do Linux7) NÃO
php -ddefault_socket_timeout=1 /usr/local/bin/composer --verbose --profile install
mencionado aqui não pareceu ajudar A atualização lenta das dependências do compositor, apesar do sinalizador --prefer-dist nem haver mencionado o protocolo IP v6 v v4 Embora pudesse ser devido ao cache.8) NÃO Instalar o zip não parece ajudar, a instalação do PHP tinha o zip pré-instalado, ele ainda reclamava de não estar lá até serem instalados como pacotes do Linux, mas tornava o processo em uma única simulação mais lento em 100 segundos de 650 a 750 segundos. Mesmas condições ambientais.
As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension
https://stackoverflow.com/a/51208804/3419535 teste em condições sem cache--no-cache
9) SIM, remover
"minimum-stability ": "dev",
10) SIM, use prefer-dist
composer require robmorgan/phinx:@dev --prefer-dist -vvv --profile
(usando um comando require como exemplo, já que usar comandos require parciais conforme mencionado acima, em vez de uma instalação completa por meio de um comando install, parece ser um dos aceleramentos mais significativos, além de exigir @ dev- como ao longo dos pontos anteriores, quandominimum-stability: dev
não aplicado genericamente a todas as dependências parece ser inofensivo usando uma base por caso (dependência))fonte
No caso, se você excluiu o arquivo composer.lock e foi para
composer install
lá, fica muito lento fazer download das dependências. Se for esse o caso, use ocomposer update
comando e isso pode ajudar você ou outras pessoas.fonte