>  기사  >  백엔드 개발  >  강력한 성능을 생성하기 위해 PHP7에서 Opcode를 활성화하는 방법에 대한 자세한 설명

강력한 성능을 생성하기 위해 PHP7에서 Opcode를 활성화하는 방법에 대한 자세한 설명

不言
不言원래의
2018-06-01 12:00:071462검색

이 글에서는 주로 PHP7에서 Opcode를 활성화하여 강력한 성능을 발휘하는 방법에 대한 관련 정보를 샘플 코드를 통해 자세히 소개합니다. 이 글은 필요한 모든 사람의 학습이나 업무에 대한 특정 참조 학습 가치를 제공합니다. 아래에서 함께 배워보세요

머리말

Brother Bird는 자신의 블로그에서 PHP 7의 성능을 향상할 수 있는 몇 가지 팁이 있다고 말했습니다. 첫 번째는 opcache를 활성화하는 것입니다.

Zend Opcache를 활성화하는 것을 기억하세요. Opcache를 활성화하지 않아도 PHP7은 Opcache보다 빠르기 때문에 PHP-5.6에서는 Opcache를 활성화했기 때문에 이전 테스트 기간 동안 일부 사람들은 Opcache를 활성화하지 않았습니다. 그렇다면 Opcache는 무엇입니까?

Opcache의 전신은 PHP의 공식 회사인 Zend에서 개발한 비공개 소스이지만 무료로 사용할 수 있는 PHP 최적화 가속 구성 요소인 Optimizer+입니다. Optimizer+는 향후 반복 사용을 위해 공유 메모리에 PHP 코드를 사전 컴파일하여 생성된 스크립트 파일 Opcode를 캐시하므로 디스크에서 코드를 읽고 다시 컴파일하는 데 소요되는 시간이 절약됩니다. 동시에 코드 실행 속도를 높이기 위해 일부 코드 최적화 모드도 적용합니다. 따라서 PHP 실행 속도가 빨라집니다. PHP의 일반적인 실행 흐름은 다음과 같습니다

요청(nginx, apache, cli 등) -->Zend 엔진은 .php 파일을 읽습니다. -->사전과 표현식을 검색합니다.--> ;파일 구문 분석 --> 실행할 컴퓨터 코드 생성(Opcode) --> 마지막으로 Opcode 실행 --> 응답 반환

PHP 스크립트가 요청될 때마다 위의 단계가 한 번 실행됩니다. PHP 소스 코드가 변경되지 않았다면 Opcode는 변경되지 않습니다. 분명히 Opcode를 매번 다시 생성할 필요는 없습니다. 웹의 유비쿼터스 캐싱 메커니즘과 결합하면 Opcode를 직접 캐시하는 것이 더 빠르지 않을까요? Opcode 캐싱을 활성화한 후의 흐름도는 다음과 같습니다.

Opcode 캐시의 목적은 반복적인 컴파일을 방지하고 CPU 및 메모리 오버헤드를 줄이는 것입니다.

다음은 Opcache의 설치를 소개합니다

설치:1. opcache의 확장을 찾으세요. 광산은 php7.1

yum list php71*

2입니다. 확장을 설치하세요

yum install php71w-opcache.x86_64

구성:

zend_extension=opcache.so
[opcache]
;开启opcache
opcache.enable=1 
;CLI环境下,PHP启用OPcache
opcache.enable_cli=1
;OPcache共享内存存储大小,单位MB
opcache.memory_consumption=128 
;PHP使用了一种叫做字符串驻留(string interning)的技术来改善性能。例如,如果你在代码中使用了1000次字符串“foobar”,在PHP内部只会在第一使用这个字符串的时候分配一个不可变的内存区域来存储这个字符串,其他的999次使用都会直接指向这个内存区域。这个选项则会把这个特性提升一个层次——默认情况下这个不可变的内存区域只会存在于单个php-fpm的进程中,如果设置了这个选项,那么它将会在所有的php-fpm进程中共享。在比较大的应用中,这可以非常有效地节约内存,提高应用的性能。
这个选项的值是以兆字节(megabytes)作为单位,如果把它设置为16,则表示16MB,默认是4MB
opcache.interned_strings_buffer=8
;这个选项用于控制内存中最多可以缓存多少个PHP文件。这个选项必须得设置得足够大,大于你的项目中的所有PHP文件的总和。
设置值取值范围最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。也就是说在200到1000000之间。
opcache.max_accelerated_files=4000
;设置缓存的过期时间(单位是秒),为0的话每次都要检查
opcache.revalidate_freq=60
;从字面上理解就是“允许更快速关闭”。它的作用是在单个请求结束时提供一种更快速的机制来调用代码中的析构器,从而加快PHP的响应速度和PHP进程资源的回收速度,这样应用程序可以更快速地响应下一个请求。把它设置为1就可以使用这个机制了。
opcache.fast_shutdown=1
;如果启用(设置为1),OPcache会在opcache.revalidate_freq设置的秒数去检测文件的时间戳(timestamp)检查脚本是否更新。
如果这个选项被禁用(设置为0),opcache.revalidate_freq会被忽略,PHP文件永远不会被检查。这意味着如果你修改了你的代码,然后你把它更新到服务器上,再在浏览器上请求更新的代码对应的功能,你会看不到更新的效果
强烈建议你在生产环境中设置为0,更新代码后,再平滑重启PHP和web服务器。
opcache.validate_timestamps=0
;开启Opcache File Cache(实验性), 通过开启这个, 我们可以让Opcache把opcode缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升.
这样PHP就会在/tmp目录下Cache一些Opcode的二进制导出文件, 可以跨PHP生命周期存在.
opcache.file_cache=/tmp

phpinfo 확인:

테스트 결과:

동일한 인터페이스가 이전 수백 밀리초에서 현재 약 50ms로 개선되었습니다

위 내용은 강력한 성능을 생성하기 위해 PHP7에서 Opcode를 활성화하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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