찾다
백엔드 개발PHP 튜토리얼[Modern PHP] 第二章 新特性之6 Zend OPcache

[Modern PHP] 第二章 新特性之六 Zend OPcache

Zend OPcache


字节码缓存技术对于PHP来说并不新鲜。我们很早就有了Alternative PHP Cache(APC)、eAccelerator、ionCube和XCache这些独立的扩展,它们都可以作为我们的可选方案。但是在PHP的每个核心发布版本中都没有它们的身影。直到现在PHP 5.5.0后,PHP才有了自己内置的字节码缓存:Zend OPcache。


首先,让我来解释一下什么是字节码以及它的重要性。PHP是一种解释语言。当PHP解释器执行一个PHP脚本时,解释器解析PHP的脚本代码,将PHP代码编译成一组Zend Opcodes(机器码指令),最终执行这些字节码。PHP文件在每次请求时都会重复上面的步骤。这样做未免太浪费了,尤其是每次HTTP请求时PHP脚本都要一次又一次的执行解析、编译和执行。如果我们有办法能够缓存住这些编译好的字节码就可以缩短应用程序的响应时间,并且能够减轻系统资源的压力。你真幸运。


字节码缓存能够存储编译后的PHP字节码。这意味着每次请求时PHP解释器不再需要读取、解析和编译PHP代码,而是可以直接从内存中读取编译后的字节码并执行。这大大节省了时间,极大的提升了应用程序的性能。


开启Zend OPcache


Zend OPcache默认是不启用的,你需要在安装编译PHP时明确的开启Zend OPcache才行。


如果你使用的是虚拟主机,请确保你选择的是一家能够提供PHP 5.5.0及以上版本并且开启Zend OPcache的优秀服务商。


如果你自己编译PHP(假设你使用的是VPS或者服务器托管),你必须在PHP的 ./configure命令后添加一个参数

--enable-opcache

在PHP编译完成后,你还需要在phpini文件中指定Zend OPcache扩展的路径,参照下面的示例:

zend_extension=/path/to/opcache.so


在PHP编译成功后会立刻显示Zend OPcache扩展的文件路径的。如果你忘了像我说的这么做,你也可以执行下面的命令来获取PHP所有扩展存放的路径地址:

php-config --extension-dir


如果你在使用无与伦比的Derick Rethans开发流行调试工具Xdebug,在php.ini文件中,Zend OPcache扩展必须在Xdebug扩展之前加载。


在你更新了php.ini文件并且重启PHP进程后就可以使用了。如果需要确认Zend OPcache是否正确安装,可以创建一个PHP文件包含下面的内容:

<?phpphpinfo ();

在浏览器中查看这个PHP文件,并且下拉滚动条直到看到Zend OPcache扩展那一段信息,如图2-2所示。如果你没有看到这段信息,就表示Zend OPcache并没有在运行。


图 2-2 Zend OPcache INI设置


配置Zend OPcache


在Zend OPcache启用的情况下,你可以在php.ini配置文件中配置Zend OPcache。下面是我喜欢使用的OPcache设置:

opcache.validate_timestamps =1 // 在生产环境中使用"0"

opcache.revalidate_freq =0

opcache.memory_consumption =64

opcache.interned_strings_buffer =16

opcache.max_accelerated_files =4000

opcache.fast_shutdown =1


想了解更多关于这些Zend OPcache设置的信息可以阅读第八章。在PHP.net上可以获取到完整的设置列表。


使用Zend OPcache


这部分内容很简单,因为Zend OPcache一旦启用就会自动工作。Zend OPcache会自动将编译后的PHP字节码缓存到内存中并自动执行混存后的字节码。


当INI参数 opcache.validate_timestamps设置为false(0)时需要格外小心。这种情况下,Zend OPcache不会检测你的PHP脚本的改动,因此你必须在改动了PHP文件后手动的去清除Zend OPcaches的字节码缓存才行。这个设置对线上的产品服务器有很大的帮助,但是会给开发带来很大的不便。你可以在开发时使用下面的php.ini的配置设置来启用自动的文件检测:

opcache.validate_timestamps = 1

opcache.revalidate_freq = 0

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

thesecrettokeepingAphp-poweredwebsiterunningsmoothlydlyUnderHeavyloadInvolvesEveralKeyStrategies : 1) ubstractOpCodeCachingWithOpCacheTecescripteExecutionTime, 2) usedatabasequeryCachingwithRedSendatabaseload, 3) LeverAgeCdnslikeCloudforforporerververforporporpin

PHP의 종속성 주입 : 초보자를위한 코드 예제PHP의 종속성 주입 : 초보자를위한 코드 예제May 14, 2025 am 12:08 AM

Code는 코드가 더 명확하고 유지 관리하기 쉽기 때문에 의존성 주입 (DI)에 관심을 가져야합니다. 1) DI는 클래스를 분리하여 더 모듈 식으로 만들고, 2) 테스트 및 코드 유연성의 편의성을 향상시키고, 3) DI 컨테이너를 사용하여 복잡한 종속성을 관리하지만 성능 영향 및 순환 종속성에주의를 기울이십시오. 4) 모범 사례는 추상 인터페이스에 의존하여 느슨한 커플 링을 달성하는 것입니다.

PHP 성능 : 응용 프로그램을 최적화 할 수 있습니까?PHP 성능 : 응용 프로그램을 최적화 할 수 있습니까?May 14, 2025 am 12:04 AM

예, PPAPPLICATIONISPOSSIBLEADESLESTION.1) INVERECINGUSINGAPCUTERODUCEDABASELOAD.2) INCODINCEDEXING, ENGICIONEQUERIES 및 CONNECTIONPOULING.3) 향상된 보드 바이어링, 플로 팅 포르코 잉을 피하는 최적화 된 APPCUTERODECEDATABASELOAD.2)

PHP 성능 최적화 : 궁극적 인 가이드PHP 성능 최적화 : 궁극적 인 가이드May 14, 2025 am 12:02 AM

theKeyStrategiesToSINCINTIFILINTINTIFILINTINTHPPORMATIONPERFORMANCEARE : 1) USEOPCODECACHING-CCHACHETEDECUTECUTINGTIME, 2) 최적화 된 ABESINSTEMENTEMENDSTEMENTEMENDSENDSTATEMENTENDS 및 PROPERINDEXING, 3) ConfigureWebSerVERSLIKENGINXXWITHPMFORBETPERMERCORMANCES, 4)

PHP 의존성 주입 컨테이너 : 빠른 시작PHP 의존성 주입 컨테이너 : 빠른 시작May 13, 2025 am 12:11 AM

aphpdectionenceindectioncontainerisatoolthatmanagesclassdependencies, 향상 Codemodularity, testability 및 maintainability.itactAsacentralHubForCreatingAndingDinjectingDingingDingingdecting.

PHP의 종속성 주입 대 서비스 로케이터PHP의 종속성 주입 대 서비스 로케이터May 13, 2025 am 12:10 AM

대규모 응용 프로그램의 경우 SELLENCIONINGESS (DI)를 선택하십시오. ServicElocator는 소규모 프로젝트 또는 프로토 타입에 적합합니다. 1) DI는 생성자 주입을 통한 코드의 테스트 가능성과 모듈성을 향상시킵니다. 2) Servicelocator는 센터 등록을 통해 서비스를 얻습니다. 이는 편리하지만 코드 커플 링이 증가 할 수 있습니다.

PHP 성능 최적화 전략.PHP 성능 최적화 전략.May 13, 2025 am 12:06 AM

phPapplicationSCanBeoptimizedForsPeedandefficiencyby : 1) ENABLEOPCACHEINPHP.INI, 2) PREPAREDSTATEMENTSWITHPDOFORDATABASEQUERIES 사용

PHP 이메일 검증 : 이메일이 올바르게 전송되도록합니다PHP 이메일 검증 : 이메일이 올바르게 전송되도록합니다May 13, 2025 am 12:06 AM

phpeMailValidationInvoLvestHreesteps : 1) formatValidationUsingRegularexpressionsTochemailformat; 2) dnsValidationToErethedomainHasaValidMxRecord; 3) smtpvalidation, theSTHOROUGHMETHOD, theCheckSiftheCefTHECCECKSOCCONNECTERTETETETETETETWERTETWERTETWER

See all articles

핫 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 옷 제거제

Video Face Swap

Video Face Swap

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

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구