이 기사는 php7의 새로운 기능에 대한 요약을 제공합니다. 이는 특정 참조 가치가 있습니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
PHP7이 출시된 지 거의 3년이 되어 이제 PHP7.2.9 버전으로 개발되었습니다. 이번 출시로 PHP의 성능이 크게 향상되었습니다. 이는 주로 Zend 엔진에 대한 PHP의 심층적인 최적화에 힘입은 동시에 시스템에서 PHP의 리소스 사용량도 감소했기 때문입니다.
주요 변경 사항은 다음과 같습니다.
추상 구문 트리
이전 버전의 PHP에서는 구문 분석 단계에서 PHP 코드가 직접 ZendVM
명령을 생성했습니다. opline
지시문은 컴파일러를 실행 프로그램에 연결하는 zend_언어_parser.y
에서 직접 생성됩니다. ZendVM
指令,也就是在 zend_language_parser.y
中直接生成 opline
指令,这使得编译器与执行器耦合在一起。
PHP7 中增加了抽象语法树,首先是将PHP代码解析生成抽象语法树,然后将抽象语法树编译为 ZendVM
指令。抽象语法树的加入使得 PHP 的编译器与执行器很好地隔离开,编译器不需要关心指令的生成规则,然后执行器根据自己的规则将抽象语法树编译为对应的指令,执行器同样不需要关心该指令的语法规则是什么样子的。
Native TLS
PHP7 中使用 Native TLS
(线程局部存储)来保存线程的资源池,简单地讲就是通过 __thread
标识一个全局变量,这样这个全局变量就是线程独享的了,不同线程的修改不会相互影响。
指定函数参数、返回值类型
PHP7中可以指定函数参数及返回值的类型。
zval 结构的变化
PHP7 将引用计数转移到了具体的 value
中,这样更合理。除此之外,zval
结构的大小也从 24byte 少到了 16byte,这是 PHP7 能够降低系统资源占用的一个优化点所在。
异常处理
PHP5.x 中很多操作会直接抛出 error 错误,PHP7 中将多数错误改为了异常抛出,这样一来就可以通过 try catch
捕捉到。
HashTable 的变化
PHP7 中 HashTable
有非常大的变化,HashTable
结构的大小从 72byte 减小到了 56byte,同时,数组元素 Bucket
结构也从 72byte 减小到了 32byte。
执行器
在 PHP7 中不再采用传参的方式,而是将 execute_data
、opline
通过寄存器来进行存储,避免了传参导致的频繁出入栈操作,同时,寄存器相比内存的访问速度更快。
新的参数解析方式
PHP5.x 通过 zend_parse_parameters()
ZendVM
명령으로 컴파일합니다. 추상 구문 트리를 추가하면 PHP 컴파일러와 실행기가 잘 분리됩니다. 컴파일러는 명령어 생성 규칙에 신경 쓸 필요가 없습니다. 그런 다음 실행기는 자체 규칙에 따라 추상 구문 트리를 해당 명령어로 컴파일합니다. 그렇지 않습니다. 이 명령어의 구문 규칙이 어떻게 생겼는지 주의해야 합니다.
PHP7은 스레드의 리소스 풀을 저장하기 위해 Native TLS
(스레드 로컬 저장소)를 사용합니다. 간단히 말하면 __thread
를 통해 전역을 식별하는 것입니다. > 변수이므로 이 전역 변수는 스레드에만 적용되며 다른 스레드의 수정 사항은 서로 영향을 미치지 않습니다.
값
으로 이동했습니다. 또한 zval
구조의 크기도 24바이트에서 16바이트로 줄었습니다. 이는 PHP7이 시스템 리소스 사용량을 줄일 수 있는 최적화 지점입니다. 🎜🎜🎜🎜예외 처리🎜🎜🎜🎜PHP5에서는 많은 작업이 이루어집니다. 🎜🎜🎜🎜HashTable 변경🎜🎜🎜🎜PHP7에서는 HashTable
에 매우 큰 변화가 있습니다. HashTable
구조의 크기가 72바이트에서 56바이트로 줄었습니다. 동시에 배열 요소execute_data
및 opline
이 레지스터에 저장되므로 빈번한 스택을 전달할 필요가 없습니다. 매개변수로 인한 작업과 동시에 레지스터 액세스 속도는 메모리보다 빠릅니다. 🎜🎜🎜🎜새로운 매개변수 구문 분석 방법🎜🎜🎜🎜PHP5.x는 함수 매개변수를 구문 분석하기 위해 zend_parse_parameters()
를 사용합니다. PHP7은 원래 방법을 유지하면서 다른 방법을 제공하지만 새로운 구문 분석 방법이 더 빠릅니다. 🎜🎜관련 권장 사항: 🎜🎜🎜PHP7 새로운 기능 소개🎜🎜🎜🎜🎜PHP7 새로운 기능 소개🎜🎜🎜🎜🎜위 내용은 php7의 새로운 기능 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

TomakePhPapplicationSfaster, followthesesteps : 1) useopCodeCaching likeOpcachetOrpectipiledScriptBecode.2) MinimizedAtabaseQueriesByUsingQueryCachingandEfficientIndexing.3) leveragephp7 assistorBetterCodeeficiession.4) 구현 전략적 지시

toImprovePhPapplicationSpeed, followthesesteps : 1) enableOpCodeCachingWithApcuTeCeScripteXecutionTime.2) 구현 구현

의존성 주입 (DI)은 명시 적으로 전이적 종속성에 의해 PHP 코드의 테스트 가능성을 크게 향상시킵니다. 1) DI 디퍼 커플 링 클래스 및 특정 구현은 테스트 및 유지 보수를보다 유연하게 만듭니다. 2) 세 가지 유형 중에서, 생성자는 상태를 일관성있게 유지하기 위해 명시 적 표현 의존성을 주입합니다. 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하여 코드 품질 및 개발 효율성을 향상시킵니다.

DatabaseQuesyOptimizationInphPinVolvesVesstoigiestoInsperferferferferformance.1) SelectOnlyNecessaryColumnstoredAtatatransfer.2) useinDexingTeSpeedUpdatarretieval.3) ubstractOrerEresultSoffRequeries.4) UtilizePreDstatements Offeffi

phpisusedforendingemailsduetoitsbuitsbuitsbuit-inmail () functionandsupportivelibraries lifephpmailerandswiftmailer.1) usethemail () functionforbasicemails, butithaslimitations.2) EmployPhpmailerforAdvancedFeatirehtMailsAndAtachments.3))

PHP 성능 병목 현상은 다음 단계를 통해 해결할 수 있습니다. 1) 성능 분석을 위해 Xdebug 또는 Blackfire를 사용하여 문제를 찾으십시오. 2) 데이터베이스 쿼리 최적화 및 APCU와 같은 캐시 사용; 3) Array_Filter와 같은 효율적인 기능을 사용하여 배열 작업을 최적화합니다. 4) 바이트 코드 캐시에 대한 OpCache 구성; 5) HTTP 요청을 줄이고 사진 최적화와 같은 프론트 엔드 최적화; 6) 지속적으로 모니터링하고 성능을 최적화합니다. 이러한 방법을 통해 PHP 응용 프로그램의 성능을 크게 향상시킬 수 있습니다.

종속성 주사 (di) inphpisadesignpattern thatmanages 및 enpleducesclassdelencies, 향상 codemodularity, trestability 및 maintainability .itallowspassingDepporsingDikedAbaseConnectionStoclassesAssparameters, 촉진 이용성.

cachingimprovesphpperferferfermanceStoringResultsOfcomputationSorqueriesforquickRetrieval, retingServerloadandenhancancing responsetimestimes : 1) opcodecaching, opcodecaching, whitescompiledphps scriptsinmorytoskipcompileation; 2) dataCachingUsingmemmc


핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.