컴포저(PHP Composer) 속도 향상 시키기


composer install 이나 composer update 명령어는 느리기로 유명합니다.


다음 방법을 통해 컴포저의 동작을 빠르게 할 수 있습니다.

parallel install plugin 설치

컴포저 install 이나 update 시 SSL 세션을 공유하고 병렬로 라이브러리를 다운로드 받아서 속도를 향상 시키는 컴포저 플러그인 https://github.com/hirak/prestissimo 를 설치하면 속도 향상을 볼 수 있습니다.


다음 명령어를 사용하여 글로벌 플러그인으로 설치하면 됩니다.

$ composer global require hirak/prestissimo


제거는 다음 명령어로 가능합니다.

$ composer global remove hirak/prestissimo


환경 설정은 ~/.composer/config.json 을 수정하면 되며 다음과 같은 항목을 설정할 수 있습니다.

{
  "config": {
    "prestissimo": {
      "maxConnections": 6,
      "minConnections": 3,
      "pipeline": false,
      "verbose": false,
      "insecure": false,
      "capath": "",
      "userAgent": "Your Awesome User Agent",
      "privatePackages": [
        "myorg/private1", "myorg/private2", ...
      ]
    }
  } 
}
  • maxConnections : 동시 다운로드할 최대 갯수로 기본 설정은 6입니다.
  • pipeline: HTTP 1.1 의 pipelining 을 지원하며 기본 설정은 false 이며 true 로 설정할 경우 PHP 5.5 이상이 필요합니다. (true 권장)
  • insecure: 기본은 false 이며 true 로 설정할 경우 SSL/TLS 연결시 서버의 인증서를 검증하지 않습니다.
  • capath: 신뢰할 인증기관(ca) 인증서의 묶음 파일의 위치이며 기본 설정은 "" 입니다.


packagist 미러 사용

중앙 저장소인 https://packagist.org 는 유럽에 있으므로 국내에서 연결하면 속도가 느립니다.

병렬 다운로드 플러그인인 prestissimo의 저자가 http://packagist.jp/ 라는 미러 사이트를 운영하고 있으며 컴포저의 저장소를 이 곳으로 바꾸면 속도가 빨라집니다.


packagist.jp 는 더 이상 업데이트 되지 않으므로 자체 서버를 구성하거나 다음 명령어로 국내 미러(https://packagist.kr/)로 저장소를 변경하세요.

$ composer config -g repos.packagist composer https://packagist.kr

국내 미러는 개인이 운영하시므로 회사에서 사용할 것이라면 자체 서버 구성을 권장합니다.


기본 설정으로 복구하려면 config --unset 옵션을 사용하면 됩니다.

 composer config -g --unset repositories.packagist