쩐쨀챌쩌쩌쩔채.

5 2500>

보너스:우리는 우리의 팟 캐스트에서 커뮤니티의 전문가와이 주제를 논의했다:

속담,상자 밖으로, 괜찮은 성능을 제공합니다. 그러나,우리는, 개발자 및 시스템 관리자로,더욱 성능을 높이기 위해 할 수있는 몇 가지가있다;때로는 거의 노력.

이 게시물에서,나는 그 다섯 가지 방법을 통해 단계로 갈거야. 읽기를 마쳤을 때쯤이면,적어도 응용 프로그램의 성능이 크게 향상되는 것을 볼 수 있을 것입니다. 시작합시다.

사용 7

성능 향상을 위한 가장 좋은 방법 중 하나는 최신 버전(7)을 실행하는 것입니다. 그것은 이전 버전에 비해 상당한 속도 향상을 제공합니다. 이제 결과는 항상 두 개의 응용 프로그램이 동일하지 않기 때문에 항상 달라집니다. 그러나 다양한 개발자 및 주목할만한 호스팅 회사의 보고서를 기반으로 성능 향상이 중요합니다.

여기에 작은 샘플이 있습니다.:

  • 그리고
  • 판테온은 7 호가 버전 5.3 보다 64%향상되었다고 보고했다.

그게 충분하지 않다면 벤치 마크를 확인하고 그들이 말하는 것을보십시오.

또한 2015 년 12 월 3 일에 7.0.0 이 릴리스되었으며,최신 안정 버전인 7.3.6 이 올해 5 월 30 일에 릴리스되었다.2018 년 12 월 31 일,7 개월 전,2018 년 12 월 31 일,2018 년 12 월 31 일,2018 년 12 월 31 일,2018 년 12 월 31 일,2018 년 12 월 31 일,2018 년 12 월 31 일,2018 년 12 월 31 일 그래서,만약 당신이 이미 하지 않은,그것은 잘 지난 시간 당신이 만든 전환 7. 업그레이드를 확인하고,라스무스는 호스팅 비용을 절감하여 녹색(어)이동,2018 에서 말했다.설치 제거

다음으로 확인해야할 것은 프로덕션 서버에 설치되지 않았다는 것입니다. 그러나 프로덕션 서버에서는(설치해도)사용할 수 없습니다.

성능 벤치마크는 다양하지만(항상 그렇듯이)스택 오버플로에 대한 한 보고서는 완전히 제거함으로써 50%의 성능 향상을 보여주었습니다. 이 응용 프로그램은 안드로이드 4.0 에 대한 강력한,빠르고,그리고 고도의 사용자 정의 홈 대체+.설치되었는지 확인하려면php -m | grep -i xdebug을 실행하거나 호스팅 제공 업체의 관리 패널을 확인하십시오. 이 프로그램은 자바 바이트코드 프로그램의 갯수를 카운트하고,스크립트의 메인 형식을 합계냅니다,그리고 확인되지 않은 실행 텍스트 파일을 찾습니다..

컴포저 최적화 오토로더 사용

우리 모두는 컴포저를 사용하여 패키지 관리를 처리하는 데 매우 익숙하지만,생성 된 구성을 최적화하는 것을 고려하지 않으면 응용 프로그램이 가능한 한 잘 수행되지 않을 것입니다.

여기에 이유를 설명하는 작곡가 문서에서 인용입니다:

파일시스템을 점검해야 클래스명을 결정적으로 확인할 수 있다. 이렇게 하면 상황이 상당히 느려지지만 개발 환경에서는 새 클래스를 추가할 때 자동 로더 구성을 다시 빌드하지 않고도 즉시 검색/사용할 수 있기 때문에 편리합니다.

성능을 향상시키기 위해 작곡가는 세 가지 최적화 수준을 제공합니다.:클래스 맵 생성

  • 신뢰할 수 있는 클래스 맵
  • 1: 클래스 맵 생성

    이 전략은 클래스 맵 규칙으로 변환됩니다. 이 전략은 클래스 맵이 알려진 파일에 대한 전체 경로를 즉시 반환하고 파일 시스템 통계 작업을 피할 수 있기 때문에 더 빠릅니다.

    이 최적화 수준을 사용하려면 다음 명령을 실행합니다:

    composer dump-autoload --optimize 

    2/에이: 신뢰할 수 있는 클래스 맵

    레벨 1 을 자동으로 활성화하는 것 외에도,이 레벨을 사용할 때,생성된 클래스 맵에서 클래스가 발견되지 않으면,오토로더는 파일 시스템을 보려고 시도하지 않을 것이다. 이 최적화 수준을 사용하려면 다음 명령을 실행합니다:

    composer dump-autoload --classmap-authoritative 

    2/이 수준에서는 클래스 맵에 대한 대체 캐시로 캐시를 추가합니다. 그러나 클래스 맵은 생성하지 않습니다. 이를 감안할 때 레벨 1 은 수동으로 활성화해야합니다. 이 최적화 수준을 사용하려면 다음 명령을 실행합니다:

    composer dump-autoload --apcu 

    이러한 각 수준은 응용 프로그램 성능을 향상시킬 수 있지만 각 수준은 사용하기 전에 이해해야 할 절충점이 있습니다. 당신이 그들을 사용하기 전에 작곡가 문서를 참조해야합니다.

    그리고 공유되지 않은 아키텍처이기 때문에,이 프로세스는 각 요청마다 발생해야합니다.

    그러나 연산 코드 캐시(연산 캐시)를 사용하면 생성 된 연산 코드가 공유 메모리에 캐시되고 대신 참조 될 수 있으므로이 단계는 각 파일에 대해 한 번만 수행하면됩니다.왜냐하면 코드를 변경할 필요가 없기 때문이다. 일부 보고서는 최대 70%의 속도 향상을 보여줍니다.

    지난 몇 년 동안 여러 연산 코드 캐시가 있었다. 이 응용 프로그램을 사용하면 웹 사이트 또는 웹 사이트를 방문 할 수 있습니다.

    에 대해 더 알고 싶다면,옵캐시 문서를 확인하십시오. 성능 조정 옵 캐시에 대한 자세한 내용을 알고,헤이든 제임스의 우수한 기사뿐만 아니라 그것을 튜닝에 조수 웨이의 게시물을 확인하십시오.2500>

    아직 들어 본 적이 없다면,그것은 매우 멋지다! 간단히 말해서,이 기능은 이전보다 더 옵캐시 기능을 사용합니다.

    빨리 정리해 보면,젠드 엔진을 실행하기 전에 먼저 파싱 한 다음 머신 종속 바이트 코드로 컴파일해야합니다. 소스 코드가 처음으로 구문 분석되고 바이트 코드를 컴파일 한 후 공유 메모리의 연산 코드 캐시에 저장되므로 연산 캐시는이 프로세스의 오버 헤드를 크게 줄입니다.

    다음 번에 해당 파일에 대한 요청이 발생하면 작업 코드 캐시에 파일에 대한 바이트 코드가 있는지 확인합니다. 그것이 경우에,그들은 돌려보내지고 사용된다. 그렇지 않은 경우(또는 바이트 코드가 컴파일 된 이후 소스 파일이 변경된 경우)소스 파일은 구문 분석,컴파일 및 캐시됩니다. 이 기능을 사용하면 성능이 크게 향상됩니다.

    이제 사전로드가 어떻게 작동하는지 살펴 보겠습니다. 구현의 인용:

    서버 시작시-응용 프로그램 코드가 실행되기 전에-우리는 메모리에 특정 파일 세트를로드 할 수 있습니다-그 서버에 의해 제공 될 모든 후속 요청에 그 내용을”영구적으로 사용 가능”합니다. 이 파일에 정의 된 모든 함수와 클래스는 내부 엔티티와 마찬가지로 즉시 요청에 사용할 수 있습니다. 사전 로딩은 다음을 보장합니다:

    • 이 파일에 정의 된 모든 함수와 대부분의 클래스는,영구적으로 빌 함수와 클래스 테이블에로드하고 미래의 요청의 맥락에서 영구적으로 사용할 수있게됩니다.
    • 클래스 종속성과 부모,인터페이스 및 특성과의 링크(연산 코드 캐싱에서는 발생하지 않는 것)를 해결합니다.
    • 불필요한 포함을 제거하고 다른 최적화를 수행합니다.

    프레임워크(예:젠드 익스프레션,심포니,라라벨)를 포함한 전체 응용 프로그램에 대한 코드를 메모리에 미리 로드함으로써,서버를 다시 시작할 때만 변경된 코드는 대부분의 응용 프로그램에서 훨씬 더 나은 성능을 발휘합니다.

    즉,사전로드에는 알아야 할 몇 가지 잠재적 인 단점이 있습니다:

    • 원본 파일을 변경할 때 서버를 다시 시작해야 합니다.
    • 공유 호스팅 환경에서는 사전로드가 작동하지 않습니다.
    • 동일한 응용 프로그램의 여러 버전이 있는 경우 사전 로딩이 작동하지 않습니다.

    사전로드는 마법이 아닙니다. 코드 및 배포 프로세스를 모두 활용하려면 리팩터링해야 합니다. 예를 들어,누군가가 서버 시작 시 로드할 파일을 결정하기 위해 사용자 지정 로더 스크립트를 개발해야 하며,이 스크립트는 서버 시작 시 실행되어야 합니다. 에 관계없이,그것은 상당한 개선,투자 가치가 하나!

    프로파일러

    를 사용하여 이전 5 개 중 어느 것보다 조금 더 많은 작업을 수행 할 수 있습니다. 종종 우리는 직감과 교육 된 추측을 사용하여 응용 프로그램의 성능 병목 현상이 어디에 있는지 추측하려고 시도합니다.

    이것들은 작동 할 수 있지만 가장 효율적인 접근 방식은 아닙니다. 대신 코드 프로파일 러를 사용하여 코드를 분석하고 병목 현상이 어디에 있는지 표시 할 수 있습니다. 특히 다음과 같은 질문에 대한 답변을 제공합니다:

    • 각 메서드는 몇 번 호출 되었습니까?
    • 각 메서드의 최대 실행 시간은 얼마입니까?
    • 각 방법의 평균 실행 시간은 얼마입니까?
    • 파일이 몇 번 포함 되었습니까?
    • 요청이 응용 프로그램을 통해 수행한 경로(첫 번째 코드 파일부터 마지막 코드 파일까지)는 무엇입니까?

    프로파일러의 결과를 드릴다운하면 응용 프로그램이 예상하지 못했던 코드 경로와 클래스를 실행하고 있다는 사실에 놀라실 수 있습니다.

    프로파일러 보고서의 정보를 바탕으로 사용자와 팀은 애플리케이션이 수행하는 작업을 더 잘 이해하고 필요한 경우 정보를 바탕으로 리팩토링을 수행하여 이를 변경할 수 있습니다.

    프로파일링을 막 시작하는 경우 몇 가지 옵션을 사용할 수 있습니다. 가장 일반적으로 사용됩니다:

    • Xdebug 의 프로파일러
    • Tideway 의 xhprof 을 extension(&XHGui)spx 프로파일러forp

    에서 결론

    그리고 그는 다섯 가지 방법의 품질을 향상시키 PHP 응용 프로그램 특히. 그들 중 어느 누구도 당신에게 주목할만한 성능 향상을 제공 할 것입니다. 함께 사용하는 경우 그러나,당신은 품질,개선을 언급하지 않기 위하여,상당한 성능을 볼 것으로 예상한다.

  • Leave a Reply