Nice programing

PHP Composer가 왜 그렇게 느린가요?

nicepro 2020. 11. 2. 19:40
반응형

PHP Composer가 왜 그렇게 느린가요?


종속성이없는 프로젝트를 초기화하기 만하면 Composer가 왜 그렇게 느린가요? 내가 실행하는 명령은 다음과 같습니다.

composer init

composer install

3 분 동안 기다립니다 (과장 아님).

작곡가가해야 할 일은 오토로더를 /vendor가져 와서를 만드는 것인데 , 왜 그렇게 오래 걸리나요? 그 문제에 대해 왜 그 단계가 일어나지 composer init않습니까?

캐시 된 autloader 및 공급 업체를 가져 오는 데 사용할 수있는 구성 옵션이 init있습니까?


또한 xdebug를 비활성화하십시오. Xdebug는 .NET Framework와 같이 간단한 명령을 실행할 때도 Composer에 몇 분 정도 걸릴 수 있습니다 composer --version.


composer는 file_get_contents(). TCP 최적화, Keep-Alive, 멀티플렉싱이 없습니다.

패키지를 병렬로 다운로드하기 위해 작곡가 플러그인을 만들었습니다.
https://packagist.org/packages/hirak/prestissimo

$ composer global에는 hirak / prestissimo가 필요합니다.

시도해주세요. 내 환경에서는 composer install10 배 더 빨라집니다.


  1. 최신 버전의 Composer가 있는지 확인하십시오.
  2. 예를 들어 -vvv를 추가하여 상세 모드로 설치합니다. composer global require "squizlabs/php_codesniffer=*" -vvv
  3. 작곡가의 속도가 느려지는 곳을 찾을 수 있다면, 예를 들어 패키지를 다운로드 할 때 5 분 동안 멈췄습니다. 50mbps 연결에서 20kb 파일을 다운로드하는 데 5 분 이상 걸렸습니다. 이는 https가 아닌 http를 사용하여 packagist에서 패키지를 다운로드했기 때문입니다. 구성을 변경하면 내 문제가 해결되었습니다.composer config --global repo.packagist composer https://packagist.org

여기도 마찬가지입니다. "composer install --profile -vvv"에서 자세한 내용을 확인하십시오. 제 경우에는 몇 개의 json 파일을 다운로드하는 데 오랜 시간이 걸립니다. 그들은 내 서버에 캐시되지만 모든 작곡가 업데이트 / 설치 호출과 함께 다운로드됩니다.

... 30 분 후 ...

@ packagist.org의 일부 성능 문제처럼 보입니다. 이제 composer 설치가 2 초 이내에 실행됩니다! 그리고 다운로드 한 json 파일은 제대로 캐시됩니다.


나는이 문제를 겪고 있었고 내 컴퓨터에 XDebug를 설치하지 않았기 때문에 곡선을 그리워했습니다. IPv6 주소 지정 모드 오류였습니다. 그래서 테스트하기 위해

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

IPv4는 통과했지만 IPv6는 실패합니다. 결국 네트워킹 스택이 지원하지 않는 이유를 찾아야하지만 제 경우에는 해결할 수있을 때까지 IPv4 트래픽을 우선적으로 사용하기로 결정했습니다. CentOS에서 /etc/gai.conf 파일을 생성 / 수정하고 다음을 넣었습니다.

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

Ubuntu에서는 해당 파일을 편집하고 줄의 주석 처리를 제거 할 수도 있습니다.

precedence ::ffff:0:0/96  100

Rackspace Community Hub의 소스


Ubuntu Xenial 16.04 VPS에서 다음을 수행해야합니다.

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

위의 답변 중 하나라도 작동하지 않으면 방화벽이 포트 9418에서 TCP_OUT을 허용하는지 확인하십시오. 방화벽 보안이 너무 예리했습니다. 이로 인해 작곡가가 너무 오래 걸리고 시간 초과 또는 포트가 차단되었음을 표시하지 않았습니다. 도움이 되었기를 바랍니다.

참고 URL : https://stackoverflow.com/questions/28436237/why-is-php-composer-so-slow

반응형