2012-08-30 6 views
4

현재 우리 프로젝트를 symfony2로 마이그레이션 중입니다. - 주요 웹 사이트 Symfony2 + Composer (다중 도메인)

  • help.domain.com - 자주 묻는 질문
  • profile.domain.com - 사용자 CP에 대한
  • 이 내 아이디어가 작동하도록에

    • domain.com : 웹 사이트는 여러 도메인을 사용합니다 디렉토리 '사이트'를 만들고 각 하위 도메인에 프레임 워크 파일이있는 자체 디렉토리를 만듭니다. 디렉토리에 대한 심볼 링크가있는 공급 업체 디렉토리 n root vendor/* (작곡가와 autoload.php 파일을 제외한 모든 디렉토리). 자동로드는 (우리는 공급 업체/회사 및 코드의 도메인간에 공유되는 코드를 저장하는 모든 도메인에 대한 ABIT 다를 수 있기 때문에, 나는 이런 식으로 할 필요

      root/ 
          sites/ 
           domain.com/ 
            app/ 
            src/ 
            web/ 
            vendor/ 
             symlinks for each library to root vendor 
            composer.json 
            composer.lock 
           profile.domain.com/ 
            app/ 
            src/ 
            web/ 
            vendor/ 
             symlinks for each library to root vendor 
            composer.json 
            composer.lock 
          vendor/ 
      

      : 그래서 구조는 다음과 같이 보입니다 도메인 별/src 폴더에 저장됩니다.

      문제는 이제 각 디렉토리에서 "composer install"를해야 할 것입니다 그것은 composer.lock 자체를 생성하고 나중에 디렉토리의에서 업데이트 할 경우 libs와 업데이트되지만 composer.lock 파일이 동기화되지 않습니다, 그래서 매번 다시 설치할 것입니다.

      이 문제를 해결하는 더 좋은 방법이 있습니까? (필자는 루트 디렉토리에서만 작곡가를 생각해 보았지만 모든 도메인에 대해 다른 autoload.php 파일을 덤프 할 방법을 찾지 못했습니다.)

    답변

    3

    하나의 프로젝트에 하나의 종속성 세트가 있거나 두 개의 프로젝트에 별도의 deps가 있습니다. 그 사이에있는 것은 말이되지 않습니다. 첫 번째 옵션을 사용하고 싶지만 자동로드 성능에 대한 우려가있는 것처럼 보입니다.

    기본적으로 자동 로딩은 느려지 게됩니다. 따라서 특정 하위 프로젝트의 deps 만 포함하여 두 개의 별도 자동로드 파일이 있더라도 매우 느릴 수 있습니다.

    정말로해야 할 일은 클래스 맵을 덤프하는 것입니다.이 맵은 기본적으로 모든 클래스 이름을 파일에 매핑하는 자동로드 파일입니다. 이렇게하면 stat 호출이 중단되어 매우 효율적입니다. 그리고 두 하위 프로젝트 모두에서 전체 클래스 맵을로드해도 APC가 활성화 된 경우 너무 많은 오버 헤드가 발생하지 않습니다.

    이 명령을 사용하여 클래스 맵 파일을 덤프 수 있습니다

    $ composer dump-autoload --optimize 
    

    이제이 증가 얻을해야 자동 로딩 성능을.

    TLDR : 클래스 맵 자동 로딩과 함께 composer.json을 사용하면 빠릅니다.

    +0

    합리적이라고 생각합니다. 감사합니다. 추신 내 솔루션은 실제로 상당히 사납게 보였다. – Anton

    +0

    "이 파일은'vendor/composer/autoload_classmap.php'에 생성됩니다. 단지'vendor/autoload.php' 대신에 그 파일을 포함 시키십시오." 'vendor/autoload.php'가 필요한가? –

    +0

    @ Halilözgür 네가 맞아. 내가 실수를했는지 아니면이 부분이 작곡가에서 바뀌 었는지 확실하지 않습니다. 나는 대답을 업데이트 할 것이다. – igorw