개발 도구 composer Composer 자동 로드 자동 로딩 성능 최적화 가이드 공유

Composer 자동 로드 자동 로딩 성능 최적화 가이드 공유

Aug 05, 2020 pm 01:10 PM
composer

다음 튜토리얼 칼럼인 composer에서는 Composer 자동 로드 자동 로딩 성능 최적화 가이드를 소개하겠습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

Composer 자동 로드 자동 로딩 성능 최적화 가이드 공유

작곡가가 제공하는 자동 로드 메커니즘을 사용하면 코드를 정리하고 새로운 클래스 라이브러리를 도입하는 것이 매우 편리하지만 프로젝트 성능이 크게 저하됩니다.

작성기 자동 로드가 느린 주된 이유는 PSR-0 및 PSR-4에 대한 지원 때문입니다. 로더가 클래스 이름을 얻으면 파일 시스템에서 해당 클래스 파일 위치를 찾아야 합니다. 물론 이것은 우리가 개발할 때 여전히 유용하므로 추가하는 새 클래스 파일이 즉시 적용될 수 있습니다. 그러나 프로덕션 모드에서는 이러한 클래스 파일을 찾아서 최대한 빨리 로드하려고 합니다.

그래서 Composer는 여러 가지 최적화 전략을 제공합니다. 이러한 최적화 전략은 아래에 설명되어 있습니다.

첫 번째 레벨(레벨-1) 최적화: 클래스 맵 생성

실행 방법:

composer dump-autoload -o 명령을 실행합니다. (-o는 --optimize와 동일합니다. )composer dump-autoload -o (-o 等同于 --optimize)

原理:

这个命令的本质是将 PSR-4/PSR-0 的规则转化为了 classmap 的规则, 因为 classmap 中包含了所有类名与类文件路径的对应关系,所以加载器不再需要到文件系统中查找文件了。可以从 classmap 中直接找到类文件的路径。

注意事项

建议开启 opcache , 这样会极大的加速类的加载。

php5.5 以后的版本中默认自带了 opcache 。

这个命令并没有考虑到当在 classmap 中找不到目标类时的情况,当加载器找不到目标类时,仍旧会根据PSR-4/PSR-0 的规则去文件系统中查找

第二层级(Level-2/A)优化:权威的(Authoritative)classmap

执行命令:

执行命令 composer dump-autoload -a (-a 等同于 --classmap-authoritative)

原理

执行这个命令隐含的也执行了 Level-1 的命令, 即同样也是生成了 classmap,区别在于当加载器在 classmap 中找不到目标类时,不会再去文件系统中查找(即隐含的认为 classmap 中就是所有合法的类,不会有其他的类了,除非法调用)

注意事项

如果你的项目在运行时会生成类,使用这个优化策略会找不到这些新生成的类。

第二层级(Level-2/B)优化:使用 APCu cache

执行命令:

执行命令 composer dump-autoload --apcu

원리:

이 명령의 핵심은 PSR-4/PSR-0 규칙을 클래스맵 규칙으로 변환하는 것입니다. 클래스맵에는 모든 클래스 이름과 클래스 파일 경로 간의 대응이 포함되어 있으므로 로더가 더 이상 필요하지 않습니다. 파일 시스템에서 파일을 찾으십시오. 클래스 파일의 경로는 클래스맵에서 직접 확인할 수 있습니다.

Notes

opcache를 활성화하는 것이 좋습니다. 그러면 클래스 로딩 속도가 크게 빨라집니다.

php5.5 이상 버전에는 기본적으로 opcache가 함께 제공됩니다.

이 명령은 클래스 맵에서 대상 클래스를 찾을 수 없는 상황을 고려하지 않습니다. 로더가 대상 클래스를 찾을 수 없는 경우에도 PSR-4/PSR- 규칙에 따라 파일 시스템에서 검색합니다. 0

2차 레벨(레벨-2/A) 최적화: 신뢰할 수 있는 클래스맵

실행 명령:

  • 실행 명령 composer dump-autoload -a(-a는 - -와 동일) classmap-authoritative)

  • Principle
  • 이 명령을 암시적으로 실행하면 Level-1 명령도 실행됩니다. 즉, 클래스맵도 생성됩니다. 차이점은 로더가 클래스맵에서 대상 클래스를 찾을 수 없는 경우에는 생성된다는 것입니다. not 그런 다음 파일 시스템에서 검색합니다(즉, 모든 합법적인 클래스가 클래스맵에 있고 불법적으로 호출되지 않는 한 다른 클래스가 없다고 암묵적으로 믿습니다)
  • Notes

프로젝트가 실행 중인 경우, 클래스가 생성되며, 새로 생성된 클래스는 이 최적화 전략을 사용하여 찾을 수 없습니다. 🎜🎜🎜두 번째 레벨(레벨-2/B) 최적화: APCu 캐시 사용🎜🎜🎜🎜실행 명령: 🎜🎜🎜실행 명령 composer dump-autoload --apcu🎜🎜🎜원칙: 🎜 🎜 🎜이 전략을 사용하려면 apcu 확장 프로그램을 설치해야 합니다. 🎜🎜apcu는 메모리 조각으로 이해될 수 있으며 여러 프로세스에서 공유될 수 있습니다. 🎜🎜이 전략은 Level-1의 클래스맵에서 대상 클래스를 찾을 수 없을 때 파일 시스템에서 찾은 결과를 공유 메모리에 저장하는 것입니다. 다음에 검색할 때 검색할 필요 없이 메모리에서 직접 반환할 수 있습니다. 다시 파일 시스템으로 이동하여 다시 검색하십시오. 🎜🎜프로덕션 환경에서 이 전략은 일반적으로 Level-1과 함께 사용됩니다. 이런 식으로 프로덕션 환경에서 새로운 클래스가 생성되더라도 파일 시스템에서 한 번 검색하여 캐시할 수 있어 Level-2/A의 단점을 보완합니다. 🎜🎜🎜최적화 전략을 선택하는 방법은 무엇입니까? 🎜🎜🎜프로젝트가 실행될 때 클래스 파일을 생성하지 않고 작곡가의 자동 로드가 필요한 경우 프로젝트의 실제 상황에 따라 전략을 선택하세요. 그런 다음 Level-2/A를 사용하고, 그렇지 않으면 Level-1 및 Level-2/를 사용하세요. B가 더 나은 선택입니다. 🎜🎜🎜몇 가지 팁🎜🎜🎜🎜🎜 레벨 2 최적화는 기본적으로 레벨 1 최적화를 보완하는 것입니다. 레벨 2/A는 주로 클래스 맵에서 대상 클래스를 찾을 수 없을 때 검색을 계속할지 여부를 결정하는 것입니다. -2/B는 주로 캐싱 메커니즘을 제공합니다. 클래스맵에서 찾을 수 없으면 파일 시스템에서 찾은 파일 경로를 캐시하여 후속 검색 속도를 높입니다. 🎜🎜🎜🎜레벨 2/A가 실행되면 클래스맵에서 찾을 수 없고 계속 검색되지 않는다는 뜻입니다. 이때 레벨 2/B는 적용되지 않습니다. 🎜🎜🎜🎜상황이 어떻든 opcache를 켜는 것이 좋습니다. 이렇게 하면 클래스 로딩 속도가 10배 이상 향상되는 것을 시각적으로 측정해 볼 수 있습니다. 🎜🎜🎜

위 내용은 Composer 자동 로드 자동 로딩 성능 최적화 가이드 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. 크로스 플레이가 있습니까?
1 몇 달 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

작곡가는 무엇을 사용합니까? 작곡가는 무엇을 사용합니까? Apr 06, 2025 am 12:02 AM

Composer는 PHP의 종속성 관리 도구입니다. 작곡가를 사용하는 핵심 단계는 다음과 같습니다. 1) Composer.json의 종속성 선언 "Stripe/Stripe-PHP": "^7.0"; 2) ComposerInstall을 실행하여 종속성을 다운로드하고 구성합니다. 3) Composer.lock 및 Autoload.php를 통해 버전 및 자동로드를 관리합니다. 작곡가는 종속성 관리를 단순화하고 프로젝트 효율성과 유지 관리를 향상시킵니다.

작곡가와 오케스트레이터의 차이점은 무엇입니까? 작곡가와 오케스트레이터의 차이점은 무엇입니까? Apr 02, 2025 pm 02:49 PM

Composer는 PHP 프로젝트의 종속성을 관리하는 데 사용되며 Orchestrator는 마이크로 서비스 또는 컨테이너화 된 응용 프로그램을 관리하고 조정하는 데 사용됩니다. 1. Composer.json 파일을 통해 PHP 프로젝트의 종속성을 선언하고 관리합니다. 2. Orchestrator는 구성 파일 (예 : Kubernetes의 Yaml 파일)을 통해 서비스의 배포 및 확장을 관리하여 고 가용성 및로드 밸런싱을 보장합니다.

사용자 정의 작곡가 패키지 설치 경로를 디버깅하는 방법은 무엇입니까? 사용자 정의 작곡가 패키지 설치 경로를 디버깅하는 방법은 무엇입니까? Apr 01, 2025 am 08:36 AM

작곡가 패키지 설치 디렉토리 및 디버깅 메소드를 사용자 정의하여 Composer를 사용하여 종속성을 관리 할 때는 패키지가 기본적으로 공급 업체 디렉토리에 설치됩니다. 필요한 경우 ...

ThinkPhp는 Alibaba Cloud Mqtt Error App \\ Controller \\ Mosquitto \\ 클라이언트에 연결합니다. ThinkPhp는 Alibaba Cloud Mqtt Error App \\ Controller \\ Mosquitto \\ 클라이언트에 연결합니다. Apr 01, 2025 am 08:24 AM

ThinkPhp에서 Mosquitto를 사용하면 app \\ Controller \\ Mosquitto \\ Client ThinkPHP 프레임 워크를 사용하여 Alibaba Cloud MQTT 서비스에 연결할 때 개발자는 오류가 발생했습니다.

생산 환경 배포 : 작곡가 로딩 개발 종속성을 피하는 방법은 무엇입니까? 생산 환경 배포 : 작곡가 로딩 개발 종속성을 피하는 방법은 무엇입니까? Apr 01, 2025 am 07:36 AM

작곡가 종속성을 효율적으로 관리합니다. 생산 환경에서 개발 종속성을로드하는 방법. 작곡가를 사용하여 PHP 프로젝트 종속성을 관리 할 때는 종종 개발 프로세스를 만듭니다 ...

공식 AI 크리에이티브 도구는 무엇입니까? 공식 AI 크리에이티브 도구는 무엇입니까? Nov 29, 2024 am 10:19 AM

공식 AI 크리에이티브 도구는 머신러닝과 고급 기술을 사용하여 창의적인 탐색, 콘텐츠 생성 및 최적화 기능을 제공하여 크리에이티브 프로세스를 향상하고 생산성을 향상시킵니다. 주요 도구로는 ChatGPT, Google AI 이미지/비디오 생성기, AWS DeepComposer 및 Azure Cognitive Services가 있습니다. 이러한 도구는 사용자가 창의적인 장벽을 허물고, 고품질 콘텐츠를 생성하고, 창의적인 결과물을 최적화하고, 팀 협업을 촉진하고, 창의성과 효율성을 향상시키는 데 도움이 될 수 있습니다.

Composer에서 자동 로딩과 네임스페이스는 어떻게 작동하나요? Composer에서 자동 로딩과 네임스페이스는 어떻게 작동하나요? Jun 04, 2024 pm 09:03 PM

Composer에서 자동 로딩 및 네임스페이스 작동 방식: 자동 로딩: Composer는 자동 로딩 기능을 활용하여 필요할 때 클래스를 자동으로 로드하므로 수동 호출의 지루함을 제거합니다. 네임스페이스: 네임스페이스는 코드를 구성하고 동일한 클래스 이름과의 충돌을 방지합니다. Composer는 네임스페이스와 디렉터리 간의 매핑을 지정하는 PSR-4 표준을 통해 네임스페이스를 지원합니다. 실제 사례: 타사 라이브러리를 사용하는 경우 작곡가.json에서 필수 및 자동 로드 부분을 구성하고 라이브러리 이름과 매핑 규칙을 지정합니다. 이를 통해 수동으로 파일을 로드할 필요 없이 라이브러리의 클래스를 직접 사용할 수 있습니다.

PHP 디버깅 작성기 종속성: 종속성 문제 해결 PHP 디버깅 작성기 종속성: 종속성 문제 해결 Jun 06, 2024 pm 12:18 PM

Composer 종속성 문제 디버깅 종속성 문제 해결 방법: Composer.lock 파일 확인 Composershow-root-requires를 사용하여 종속성 새로 고침 강제 디버그 모드 설정 실제 사례: 패키지 충돌: Composershow-root-requires를 사용하여 충돌을 발견하고 비호환성 패키지를 수동으로 업그레이드 . 누락된 종속성: Composer.json에 누락된 종속성을 추가하고 다시 설치하세요. 더 이상 사용되지 않는 종속성: 더 이상 사용되지 않는 패키지를 업데이트하려면 Composerupdate를 사용하세요.

See all articles