> 백엔드 개발 > PHP 튜토리얼 > 2022년 PHP 기능, 커널 및 아키텍처에 대한 최신 간략한 분석

2022년 PHP 기능, 커널 및 아키텍처에 대한 최신 간략한 분석

藏色散人
풀어 주다: 2023-04-11 07:24:02
앞으로
3044명이 탐색했습니다.

1. JIT 적시 컴파일러. opcache 최적화를 기반으로 jit는 런타임 정보와 결합하여 다시 최적화하여 기계어 코드를 직접 생성합니다. JIT는 opcache 최적화를 대체하는 것이 아니라 향상된 기능입니다.

2. 값 변환 및 변수 할당에 사용되는 일치 표현식입니다.

3. 유니온형.

여러 가지 유형의 선언 및 승인을 지원합니다. 이는 두 개 이상의 유형의 모음입니다.

4. 정적 반환 유형. PHP 8에서는 정적 반환 유형에 대한 지원이 더욱 효율적입니다.

5. 약한 매핑 WeakMap. 배열의 키를 객체에 배치할 수 있습니다.

6. 클래스 변경 및 사용법

1. 가변 매개변수 상속(맛없음), 허용됨

  • 2. LSB(유용함), 프레임워크 수준 캡슐화 및 일부 팩토리 디자인 패턴이 작동합니다.

  • 3. 이제 다음 메소드를 사용하여 객체의 클래스 이름을 가져올 수 있습니다

  • 4. 이제 new(expression)(... $args를 사용하여 new 및 instanceof를 모든 표현식과 함께 사용할 수 있습니다. ) 및 $obj 인스턴스 오브(표현식).

  • 5. 이제 글쓰기가 허용됩니다.

  • 6. 문자열 가능 인터페이스를 추가합니다(뷰 템플릿 캡슐화에 사용되는 일반 함수).

  • 7. 이제 Trait은 추상 비공개 메서드를 정의할 수 있습니다.

PHP7의 새로운 기능? (PHP5와의 차이점)

1. 스칼라 유형 선언 및 반환 값 유형 선언.

2. null 병합 연산자(??)

3. 네임스페이스 참조 사용 개선: 이제 동일한 네임스페이스에서 가져온 클래스, 함수 및 상수를 단일 사용 문을 통해 한 번에 가져올 수 있습니다.

4. 이제 익명 클래스를 지원합니다. 새로운 클래스를 통해 익명 클래스를 인스턴스화합니다

5. 성능은 php5보다 2배 높습니다.

6. 64비트를 지원합니다.

php5에 비해 php7의 성능이 향상된 이유는 무엇인가요?

1. 가변 저장 바이트가 줄어듭니다. 메모리 사용량을 줄이고 가변 작업 속도를 높입니다

2. 어레이 구조를 개선합니다. 배열 요소와 해시 매핑 테이블이 동일한 메모리에 할당되어 메모리 사용량이 줄어들고 CPU 캐시 적중률이 향상됩니다

3. 향상된 함수 호출 메커니즘. 매개변수 전달 과정을 최적화하여 일부 명령어를 줄이고 실행 효율성을 높였습니다.

PHP7 실행 과정?

어휘 분석, 소스 코드를 여러 문자열 단위(토큰)로 절단 2022년 PHP 기능, 커널 및 아키텍처에 대한 최신 간략한 분석

구문 분석기는 토큰을 AST 추상 구문 트리로 변환합니다.

추상 구문 트리는 opcode(opcode 명령어 세트)로 변환됩니다

가상 머신은 opcode를 해석하고 실행합니다(opcode는 핸들러 처리 기능에 해당하는 명령 식별자 집합입니다).

웹 모드에서 PHP 수명 주기는?

SAPI는 다음 단계를 통해 PHP를 실행합니다. 1. 모듈 초기화 단계(module init):

이 단계에서는 주로 PHP 프레임워크와 zend 엔진의 초기화 작업을 수행합니다. 이 단계는 일반적으로 SAPI가 시작될 때 한 번 실행됩니다. FPM의 경우 fpm 마스터가 시작될 때 실행됩니다. PHP는 각 확장의 코드를 로드하고 모듈 초기화 루틴(MINIT)을 호출하여 모듈에 필요한 일부 변수를 적용하고 메모리를 할당합니다.

2. 요청 초기화 단계(request init):

페이지 요청이 발생하면 요청이 처리되기 전에 경험하게 되는 단계입니다. fpm의 경우 작업자 프로세스가 요청을 수락하고 요청 데이터를 읽고 구문 분석한 후의 단계입니다. 이 단계에서 SAPI 계층은 제어권을 PHP 계층에 넘겨주고 PHP는 이 요청에 대한 스크립트를 실행하는 데 필요한 환경 변수를 초기화합니다.

3. PHP 스크립트 실행 단계:

PHP 코드를 구문 분석하고 실행하는 과정입니다. Zend 엔진이 제어를 맡아 PHP 스크립트 코드를 opcode로 컴파일하고 순차적으로 실행합니다.

4. 종료 요청:

요청이 처리된 후 종료 단계에 들어가고 PHP는 정리 프로세스를 시작합니다. 이 단계에서는 출력 내용이 플러시되고 http 응답 내용이 전송된 다음 각 모듈의 RSHUTDOWN 메서드를 순차적으로 호출합니다. RSHUTDOWN은 프로그램 실행 시 생성된 기호 테이블을 지우는 데, 즉 각 변수에 대해 설정되지 않은 함수를 호출하는 데 사용됩니다.

5. 모듈 종료:

이 단계는 SAPI가 닫힐 때 실행되며 모듈 초기화 단계에 해당합니다. 이 단계는 주로 리소스를 정리하고 각 PHP 모듈을 닫는 동시에 각 확장의 모듈 종료 후크 기능을 호출합니다. 이는 fpm 종료와 같은 모든 요청이 완료된 후에 발생합니다. (CGI, CLI 등 SAPI의 경우 "다음 요청"이 없으므로 SAPI가 즉시 종료되기 시작합니다.)

php7 아키텍처란 무엇인가요?

2022년 PHP 기능, 커널 및 아키텍처에 대한 최신 간략한 분석

Zend 엔진: Zend 엔진은 어휘 분석, 구문 분석, AST 추상 구문 트리 컴파일, opcode 실행, PHP 변수 설계, 메모리 관리 및 프로세스 관리를 포함한 PHP용 기본 서비스를 제공합니다.

PHP 레이어: SAPI 레이어를 바인딩하고 이 레이어와의 통신을 처리합니다. 또한 safe_mode 및 open_basedir 감지를 위한 일관된 제어 레이어를 제공하고 fopen(), fread() 및 fwrite()와 같은 사용자 공간 기능을 파일과 통합합니다. 네트워크 I/O에 연결되었습니다.

SAPI: 외부 인터페이스를 추상화하는 cli fpm 등을 포함하면 SAPI 프로토콜을 따르는 한 서버를 구현할 수 있습니다.

확장: zend 엔진은 이를 기반으로 개발 및 확장이 가능합니다.

PHP 데이터 구현?

PHP 데이터의 기본 구현은 해시 테이블(또는 hashTable)

PHP의 가비지 수집 메커니즘?

PHP는 자동으로 메모리를 관리하고 불필요한 개체를 지울 수 있습니다.

PHP는 참조 카운팅 GC 메커니즘을 사용합니다.

각 개체에는 참조 카운터 참조 횟수가 포함되어 있으며 각 참조는 개체에 연결되어 있으며 카운터는 1씩 증가합니다. 참조가 생활 공간을 벗어나거나 NULL로 설정되면 카운터가 1씩 감소합니다. 객체의 참조 카운터가 0에 도달하면 PHP는 더 이상 객체를 사용할 필요가 없다는 것을 알고 객체가 차지하는 메모리 공간을 해제합니다.

PHP-FPM의 아키텍처 모델은 무엇입니까? 어떻게 최적화하셨나요?

마스터와 작업자의 아키텍처 패턴입니다. 작업은 요청을 처리하고 마스터는 하위 프로세스를 관리하고 재활용합니다.

최적화를 위해 프로세스 수 구성이 변경되었습니다.

간단히 설명하자면, 이전에 구성된 정적 모드로 인해 기본 프로세스 수는 200이었습니다. 나중에는 특정 동시성이 있었기 때문에 "세 번째" 구성 모드로 변경하고 지정된 프로세스 수를 구성해야하며, 그리고 최소값과 최대값이 있습니다(여기서 최대값은 실제로 잊어버렸습니다. 무제한이어서는 안 된다고 생각합니다. 결국 하드웨어 리소스가 한계입니다). 그런 다음 실제를 기반으로 프로세스 수를 동적으로 늘립니다. 요청 수. ㅋㅋㅋ         

위 내용은 2022년 PHP 기능, 커널 및 아키텍처에 대한 최신 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
php
원천:learnku.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿