OPcache는 사전 컴파일된 PHP 스크립트 바이트코드를 공유 메모리에 저장하여 PHP 성능을 향상시킵니다. 사전 컴파일된 바이트코드를 저장하면 매번 PHP 스크립트를 로드하고 구문 분석하는 오버헤드가 절약된다는 점입니다. PHP 5.5 이후 버전은 기본적으로 이 확장에 바인딩됩니다. 이전 버전의 PHP 5.2, 5.3 및 5.4는 » PECL 확장에서 OPcache 라이브러리를 사용할 수 있습니다.
구성 항목 설명
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1
이 구성 항목은 PHP 매뉴얼에서 권장하는 항목으로 php.ini 중간에 설정되어 있습니다. 각 구성 항목에 대한 설명은 다음과 같습니다.
-
opcache.memory_consumption : OPcache 크기의 공유 메모리(MB)입니다.
-
opcache.interned_strings_buffer : 예약된 문자열을 저장하는 데 사용되는 메모리 크기(MB)입니다. 5.3.0 이전 버전의 PHP에서는 이 구성 지시문을 무시합니다.
-
opcache.max_accelerated_files : OPcache 해시 테이블에 저장할 수 있는 스크립트 파일 수의 상한입니다. 실수값은 소수 집합 {223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987}에서 발견된 집합 값보다 크거나 같은 첫 번째 소수입니다. 설정값의 최소값 범위는 200이고, 최대값은 PHP 5.5.6 이전에는 100000, PHP 5.5.6 이후에는 1000000입니다.
-
opcache.revalidate_freq : 스크립트 타임스탬프가 업데이트되었는지 확인하는 기간(초)입니다. 0로 설정하면 OPcache가 모든 요청에 대해 스크립트 업데이트를 확인하게 됩니다. opcache.validate_timestamps 구성 지시문이 비활성화로 설정된 경우 이 설정은 무시됩니다.
-
opcache.validate_timestamps : 활성화되면 OPcache는 opcache.revalidate_freq초마다 스크립트가 업데이트되었는지 여부를 확인합니다. 이 옵션이 비활성화된 경우 opcache_reset() 또는 opcache_invalidate() 함수를 사용하여 OPcache를 수동으로 재설정하거나 파일 시스템 변경 사항을 적용하려면 웹 서버를 다시 시작해야 합니다.
-
opcache.fast_shutdown : 활성화되면 빠른 중지 재개 이벤트가 사용됩니다. 소위 빠른 중지 재개 이벤트는 할당된 각 메모리 블록을 순차적으로 해제하는 대신 Zend 엔진을 사용하여 요청된 모든 변수의 메모리를 한 번에 해제하는 메모리 관리 모듈을 나타냅니다. PHP 7.2.0부터 이 구성 지시문이 제거되었습니다. 빠른 중지 재개 이벤트 처리가 PHP에 통합되었으며, PHP는 가능할 때마다 이러한 재개 이벤트를 자동으로 처리합니다.
자세한 구성 항목 설명은 OPcache 매뉴얼을 참고하세요.
OPcache 기능
OPcache는 바이트코드의 캐시 상태를 제어하기 위한 몇 가지 내장 기능을 제공합니다. 사용 전제 조건은 OPcache 확장을 활성화하는 것입니다.
-
opcache_compile_file: 캐시된 PHP 스크립트를 실행하지 않고 컴파일할 수 있습니다. FILE 매개변수를 단독으로 사용하는 경우 FILE이 스크립트 경로입니다. 예: opcache_compile_file('index.php' )
-
opcache_get_configuration: opcache의 현재 구성 정보를 모두 가져옵니다.
-
opcache_get_status: opcache의 현재 캐시 정보를 가져옵니다. 해당 정보에는 공유 메모리 공간이 가득 찼는지 등이 포함됩니다.
-
opcache_invalidate: opcache를 폐지합니다. 스크립트 캐시에는 두 가지 매개변수가 있는데, 스크립트(스크립트 경로 정보)는 필수이며, force(부울)는 선택 사항입니다. force 매개변수가 true인 경우 캐시가 false이거나 채워지지 않은 경우 강제로 폐기됩니다. 그러면 스크립트의 수정 시간이 해당 바이트코드 시간보다 최신인 경우에만 스크립트 캐시가 유효하지 않게 됩니다.
-
opcache_is_script_cached: 스크립트가 OPCache에 캐시되어 있는지 확인하세요. 매개변수 FILE(파일 경로)이 필요합니다.
-
opcache_reset: 모든 opcache 캐시를 재충전하고 다음 컴파일을 기다립니다
개발 노트
로컬 개발 환경에서는 OPcache 확장 기능을 끄는 것이 좋습니다. 캐시로 인해 로컬 디버깅에 많은 문제가 발생하고 개발 효율성이 저하될 수 있습니다.
공유 메모리에 대한 지식 확장
공유 메모리는 동일한 머신의 애플리케이션 간에 데이터를 교환하는 효율적인 방법입니다. 프로그램을 위한 메모리의 실행 효율성은 디스크 I/O보다 높으므로 메모리를 합리적으로 사용하면 프로그램의 효율성을 높일 수 있습니다. 해당 애플리케이션 시나리오에는 웹 요청, 데이터베이스 쿼리, 템플릿 엔진 캐싱 및 현재 기사에서 언급된 PHP용 OPcache 컴파일 캐시가 포함됩니다.
추천 튜토리얼: "PHP 튜토리얼"
위 내용은 PHP의 OPcache 확장에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!