>  기사  >  개발 도구  >  작곡가 자동 로더 최적화

작곡가 자동 로더 최적화

藏色散人
藏色散人앞으로
2019-10-29 14:29:133243검색

다음은 composer 명령에서 작곡가 자동 로더 최적화에 대해 소개하는 튜토리얼 칼럼을 사용하여 소개한 내용입니다. 필요!

작곡가 자동 로더 최적화

오토로더 최적화

보통 Composer의 오토로더가 실행되는 속도는 상대적으로 빠릅니다. 그러나 PSR-4 및 PSR-0의 자동 로딩 규칙으로 인해 클래스를 최종적으로 구문 분석하기 전에 파일 시스템을 확인해야 합니다. 이로 인해 자동 로딩 속도가 상당히 느려지지만 개발 환경에서는 새 클래스를 생성할 때 로더가 필요 없이 즉시 클래스를 찾아 사용하기 때문에 매우 편리한 로딩 방법이 될 것입니다. 오토로더 구성을 재구축합니다.

이러한 로딩 규칙으로 인해 발생하는 문제는 실제로 프로덕션 환경에 반영됩니다. 프로덕션 환경에서는 각 배포 전에 구성을 매우 쉽게 다시 빌드할 수 있으며 배포 간에 무작위가 발생하지 않습니다. 새로운 클래스가 나타나므로 항상 파일 시스템을 확인하는 데 필요하지 않으며 일반적으로 자동 로딩이 최대한 빨리 완료되기를 원합니다.

위의 이유로 Composer는 오토로더에 대한 몇 가지 최적화 전략을 제공합니다.

참고: 이 문서에 설명된 최적화 전략은 개발 환경에서 사용하면 안 됩니다. 클래스를 추가하거나 제거할 때 다양한 문제가 발생할 수 있기 때문입니다. 실제로 개발 환경에서 이러한 설정을 적용함으로써 얻을 수 있는 성능상의 이점은 이로 인해 발생하는 문제보다 훨씬 큽니다.

최적화 레벨 1: 클래스 맵 생성

어떻게 실행하나요?

이 기능을 활성화하는 몇 가지 옵션이 있습니다:

composer.json 구성에서 "optimize-autoloader" 설정: true

#🎜 🎜#설치 또는 업데이트를 호출하려면 -o / --optimize-autoloader를 사용하세요.

dump-autoload를 호출하려면 -o / --optimize를 사용하세요.

무슨 일인가요? 그렇죠?

클래스 매핑 생성은 기본적으로 PSR-4/PSR-0 규칙을 클래스 매핑 규칙으로 변환합니다. 알려진 클래스 맵이 경로를 즉시 반환하고 Composer는 클래스가 거기에 있음을 보장할 수 있으므로 파일 시스템 검사가 필요하지 않으므로 모든 것이 훨씬 더 빨라집니다.

PHP 5.6+에서는 클래스맵이 opcache에도 캐시되므로 초기화 시간이 크게 향상됩니다. opcache가 활성화되어 있는지 확인하면 클래스맵이 즉시 로드되고 클래스가 빠르게 로드됩니다.

tradeoff

이 접근 방식에는 실질적인 장단점이 없습니다. 프로덕션 환경에서는 항상 활성화되어야 합니다.

유일한 문제는 자동 로딩을 추적하지 않는다는 것입니다(예: 특정 클래스를 찾을 수 없는 경우). 따라서 PSR-4로 대체되는 규칙은 여전히 ​​파일 시스템 검사를 일으킬 가능성이 있습니다. 속도를 늦추세요. 이 문제를 해결하기 위해 프로젝트에 존재하지 않는 클래스에 대해 class_exists 검사를 많이 수행하는 경우 활성화하도록 결정할 수 있는 두 가지 보조 최적화 옵션이 있습니다.

최적화 수준 2/A: 권한 있는 클래스 매핑

활성화하는 방법은 무엇인가요?

이 기능을 활성화하는 옵션은 여러 가지가 있습니다.

Composer.json의 구성 키에 "classmap-authoritative": true

# 설정 🎜🎜#설치 또는 업데이트를 호출하려면 -a / --classmap-authoritative를 사용하세요.

dump-autoload를 호출하려면 -a / --classmap-authoritative를 사용하세요.

#🎜🎜 #it ​​그것은 무엇을 하는가?

이 옵션을 활성화하면 레벨 1 클래스 맵 최적화가 자동으로 활성화됩니다.

이 옵션은 간단합니다. 클래스 다이어그램에 무언가가 없으면 존재하지 않으며 오토로더는 PSR-4 규칙에 따라 파일 시스템을 보려고 시도해서는 안 된다는 것입니다.

tradeoff

이 옵션을 사용하면 자동 로더가 항상 빠르게 돌아올 수 있습니다. 반면에 어떤 이유로 클래스가 런타임에 생성되면 자동 로딩이 허용되지 않는다는 뜻이기도 합니다. 프로젝트 또는 해당 종속 항목이 이렇게 하면 프로덕션에서 "클래스를 찾을 수 없음" 문제가 발생할 수 있습니다. 활성화하려면 주의하세요.

참고: 이는 레벨 2/B 최적화와 함께 사용할 수 없습니다. 동일한 문제를 다른 방식으로 해결하기 때문에 하나를 선택해야 합니다.

최적화 수준 2/B: APCu 캐시

활성화하는 방법은 무엇인가요?

이 기능을 활성화하는 옵션이 있습니다:

composer.json의 구성 키에서 "apcu-autoloader": true 설정

# 🎜 🎜# --apcu-autoloader를 사용하여 설치 또는 업데이트 호출

--apcu를 사용하여 dump-autoload 호출

무엇을 합니까?

이 옵션은 APCu 캐시를 클래스 매핑의 대체 수단으로 추가합니다. 클래스맵을 자동으로 생성하지 않으므로 원하는 경우 레벨 1 최적화를 수동으로 활성화해야 합니다. 클래스 검색 여부에 관계없이 이 사실은 항상 APCu에 캐시되므로 다음 요청 시 빠르게 반환될 수 있습니다.

tradeoff

이 옵션에는 APCu가 필요하며 이는 작동할 수도 있고 작동하지 않을 수도 있습니다. 또한 자동 로딩을 위해 APCu 메모리를 사용하지만 사용이 안전하며 위의 권위 있는 클래스맵 최적화처럼 클래스를 찾을 수 없는 문제도 발생하지 않습니다. 참고: 이는 레벨 2/A 최적화와 함께 사용할 수 없습니다. 동일한 문제를 다른 방식으로 해결하기 때문에 하나를 선택해야 합니다.

위 내용은 작곡가 자동 로더 최적화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 learnku.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제