PHP에서 opcache 사용

一个新手
풀어 주다: 2023-03-15 18:54:02
원래의
1937명이 탐색했습니다.

우리 모두 알고 있듯이 PHP는 해석된 언어이며 실행은 다음 프로세스로 나눌 수 있습니다.

  1. 스캔(Lexing), PHP 코드를 언어 조각(토큰)으로 변환

  2. 파싱, 토큰을 언어 조각으로 변환 간단하고 의미있는 표현식

  3. Compilation은 표현식을 Opocdes

  4. Execution으로 컴파일하고 Opcode를 한 번에 하나씩 순차적으로 실행함으로써 PHP 스크립트의 기능을 구현합니다.

이 경우 동일한 파일에 대한 반복 요청에는 PHP 스크립트의 지속적인 구문 분석, 컴파일 및 실행이 필요하므로 너무 많은 리소스가 소모됩니다.

PHP 기존 운영 모드:

PHP에서 opcache 사용

이 문제를 해결하기 위해 opcode 캐싱 기술이 탄생했습니다.

그럼 opcode 캐시란 무엇인가요?

통역사는 스크립트 코드 분석을 완료한 후 직접 실행할 수 있는 중간 코드, 즉 연산 코드(Operate Code, opcode)를 생성합니다. Opcode 캐싱은 컴파일된 Opcode 코드를 메모리에 캐시하는 것입니다. 다음에 이 스크립트를 실행할 때 캐시된 Opcode 코드를 직접 찾아 중간 단계 없이 마지막 단계를 직접 실행하는 것이 목적입니다. CPU 및 메모리 오버헤드를 줄입니다.

통역사는 스크립트 코드 분석을 완료한 후 직접 실행할 수 있는 중간 코드, 즉 연산 코드(Operate Code, opcode)를 생성합니다. Opcode 캐싱은 컴파일된 Opcode 코드를 메모리에 캐시하는 것입니다. 다음에 이 스크립트를 실행할 때 캐시된 Opcode 코드를 직접 찾아 중간 단계 없이 마지막 단계를 직접 실행하는 것이 목적입니다. CPU 및 메모리 오버헤드를 줄입니다.

캐시 작동 모드:

PHP에서 opcache 사용

opcache는 opcode 캐싱 도구입니다.

Opcache의 장점이라고도 할 수 있는 다른 캐싱 도구와의 가장 큰 차이점은 PHP 소스 코드 트리에 진입하여 공식 제품이 된 반면 다른 도구는 항상 PHP로 업데이트된다는 것입니다. 오랫동안 업데이트되지 않았습니다. 현재는 새 버전의 PHP에 대해 업데이트되지 않았습니다. 지원되지 않거나 호환성이 좋지 않습니다. 둘째, 테스트 후 opcache는 다른 도구보다 더 효율적입니다.

그렇다면 opcache를 활성화하는 방법은 무엇일까요?

이제 opcahce가 내장 도구로 PHP 소스 트리에 들어왔으므로 열기가 매우 간단해야 합니다. 다음은 권장 구성입니다.

zend_extension=.././...php_opcache.dll(路径)
opcache.memory_consumption=128  
 #共享内存opcache.interned_strings_buffer=8   
 #存储临时字符串opcache.max_accelerated_files=4000   
 #缓存文件数opcache.revalidate_freq=60  
 #缓存时间opcache.fast_shutdown=1opcache.enable_cli=1 opcache.enable=1   
 #是否开启opcode缓存
로그인 후 복사

이전;만 제거하면 됩니다.

물론 opcache에는 많은 구성이 있으므로 여기에 모두 나열하지는 않겠습니다. 위의 구성은 표준 구성이며 일반적인 요구 사항을 충족할 수 있습니다.

이론적으로 PHP 파일이 클수록, 로직이 복잡할수록 opcache의 효과는 더욱 뚜렷해지며, 속도와 동시성 방지 측면에서 큰 역할을 합니다.

로컬 환경에서의 테스트 결과는 다음과 같습니다(컴퓨터 성능이 제한됨):

PHP에서 opcache 사용

서버 테스트:

PHP에서 opcache 사용

PHP에서 opcache 사용

효율성이 크게 향상되었습니다.

opcache는 파일의 첫 번째 실행에 대한 opcode를 캐시하므로 테스트 환경에서 열어서는 안 됩니다. 이유는 개발 중에 코드가 계속해서 변경되기 때문입니다. 결과는 변경되지 않습니다... .

opcache 캐시를 수동으로 지우려면 opcache_reset()을 실행하여 지워야 하므로 opcache가 온라인으로 구성되어 지워져야 하는 경우 이 기능을 사용할 수 있습니다.

재인쇄: http://qqfe.org/archives/240?utm_source=tuicool&utm_medium=referral

众所周知php是一种解释型语言,它的执行可分为如下几个流程:

  1. Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)

  2. Parsing, 将Tokens转换成简单而有意义的表达式

  3. Compilation, 将表达式编译成Opocdes

  4. Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

这样一来的话,对于同一个文件,反复请求,就要不断解析、编译和执行PHP脚本,消耗过多资源。

php传统运行方式:

PHP에서 opcache 사용

为了解决这个问题,opcode缓存技术应运而生。

那么什么是 opcode 缓存?

当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode 缓存就是将编译好的Opcode码缓存在内存中,下次再执行这个脚本时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了,其目地是避免重复编译,减少 CPU 和内存开销。

当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode 缓存就是将编译好的Opcode码缓存在内存中,下次再执行这个脚本时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了,其目地是避免重复编译,减少 CPU 和内存开销。

缓存运行方式:

PHP에서 opcache 사용

opcache就是一种opcode缓存工具。

Opcache其他的缓存工具最大的不同,也可以说是优势,就是它已经进入php源码树,成为官方产品,会一直跟着php更新,而其他的已经很久不更新了,目前对于新版的php都不支持或者兼容性很差。其次,经过测试,opcache的效率也比其他工具高。

那么如何开启使用opcache呢?

既然opcahce已经进入php源码树,那么作为内置的工具,开启方式肯定很简单了,下面便是推荐配置:

zend_extension=.././...php_opcache.dll(路径)
opcache.memory_consumption=128   
#共享内存opcache.interned_strings_buffer=8  
 #存储临时字符串opcache.max_accelerated_files=4000   
 #缓存文件数opcache.revalidate_freq=60  
 #缓存时间opcache.fast_shutdown=1opcache.enable_cli=1 opcache.enable=1   
 #是否开启opcode缓存
로그인 후 복사

你只需要将前面的;去掉就可以了。

当然opcache有很多配置,这里就不一一列举,上面这几条是标配,可以满足一般需求。

理论上讲,php文件越大,逻辑越复杂,那么opcache的效果就越明显,而且在速度和抗并发上有非常大的作用。

在本地环境测试结果如下(电脑性能有限):

PHP에서 opcache 사용

服务器测试:

PHP에서 opcache 사용

PHP에서 opcache 사용

有明显的效率提升。

需要注意到是,opcache既然会缓存住文件第一次执行的opcode,那么在测试环境就不要开了,原因你懂得,开发时代码改来改去,结果却不变………..

要手动清除opcache缓存,需要运行opcache_reset()来清除,所以线上如果配置了opcache,需要清除的话可以用这个函数。

위 내용은 PHP에서 opcache 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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