다음은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!