PHP 5.5가 출시되었으며 OPCache라는 새로운 코드 캐싱 모듈을 제공하지만 이에 대한 문서는 없습니다.
그렇다면 문서는 어디에 있으며 OPcache를 어떻게 사용합니까?
답변
설치
OpCache는 기본적으로 PHP5.5 +에서 컴파일됩니다. 그러나 기본적으로 비활성화되어 있습니다. PHP5.5 +에서 OpCache를 사용하려면 먼저 활성화해야합니다. 이렇게하려면 다음을 수행해야합니다.
에 다음 줄을 추가하십시오 php.ini
.
zend_extension=/full/path/to/opcache.so (nix)
zend_extension=C:\path\to\php_opcache.dll (win)
경로에 공백이 있으면 따옴표로 묶어야합니다.
zend_extension="C:\Program Files\PHP5.5\ext\php_opcache.dll"
또한 실제 Zend 엔진 (예 : PHP를 실행하는 엔진)에 영향을주기 때문에 zend_extension
“normal”지시문 대신 지시문 을 사용해야합니다 extension
.
용법
현재 사용할 수있는 네 가지 기능이 있습니다.
opcache_get_configuration()
:
OpCache가 현재 사용하는 구성을 포함하는 배열을 반환합니다. 여기에는 모든 ini 설정과 버전 정보 및 블랙리스트 파일이 포함됩니다.
var_dump(opcache_get_configuration());
opcache_get_status()
:
캐시의 현재 상태에 대한 정보가있는 배열을 반환합니다. 이 정보에는 캐시 상태 (활성화, 재시작, 전체 등), 메모리 사용량, 적중, 누락 및 기타 유용한 정보가 포함됩니다. 캐시 된 스크립트도 포함됩니다.
var_dump(opcache_get_status());
opcache_reset()
:
전체 캐시를 재설정합니다. 다음에 방문 할 때 가능한 모든 캐시 된 스크립트가 다시 구문 분석됩니다.
opcache_reset();
opcache_invalidate()
:
캐시 된 특정 스크립트를 무효화합니다. 다음에 방문 할 때 스크립트가 다시 파싱됨을 의미합니다.
opcache_invalidate('/path/to/script/to/invalidate.php', true);
유지 보수 및 보고서
OpCache를 유지 관리하고 유용한 보고서를 생성하는 데 도움이되는 GUI가 있습니다. 이러한 도구는 위의 기능을 활용합니다.
OpCacheGUI
면책 조항 나는이 프로젝트의 저자입니다
풍모:
- OpCache 상태
- OpCache 구성
- OpCache 통계
- OpCache 재설정
- 캐시 된 스크립트 개요
- 캐시 된 스크립트 무효화
- 다국어
- 휴대 기기 지원
- 반짝이는 그래프
스크린 샷 :
URL : https://github.com/PeeHaa/OpCacheGUI
opcache- 상태
풍모:
- OpCache 상태
- OpCache 구성
- OpCache 통계
- 캐시 된 스크립트 개요
- 하나의 파일
스크린 샷 :
URL : https://github.com/rlerdorf/opcache-status
opcache-gui
풍모:
- OpCache 상태
- OpCache 구성
- OpCache 통계
- OpCache 재설정
- 캐시 된 스크립트 개요
- 캐시 된 스크립트 무효화
- 자동 새로 고침
스크린 샷 :
답변
OPcache가 APC를 대체합니다
OPcache는 APC 모듈을 대체하도록 설계되었으므로 PHP에서 병렬로 실행할 수 없습니다. 이것은 코드 작성 방법에 영향을 미치지 않기 때문에 PHP opcode 캐싱에 좋습니다.
그러나 현재 APC를 사용하여 apc_store()
기능을 통해 다른 데이터를 저장 하는 경우 OPCache를 사용하기로 결정한 경우 에는 해당 기능을 수행 할 수 없습니다.
공유 PHP 메모리에 데이터를 저장하는 APCu 또는 Yac 와 같은 다른 라이브러리를 사용 하거나 메모리에 별도의 프로세스로 데이터를 PHP에 저장하는 memcached와 같은 것을 사용하도록 전환해야합니다.
또한 OPcache에는 APC에 존재하는 업로드 진행률 표시기가 없습니다. 대신 세션 업로드 진행을 사용해야합니다 .
OPcache 설정
OPcache에 대한 문서를 찾을 수 있습니다 여기에 나열된 모든 설정 옵션과 함께 여기 . 권장되는 설정은 다음과 같습니다.
; Sets how much memory to use
opcache.memory_consumption=128
;Sets how much memory should be used by OPcache for storing internal strings
;(e.g. classnames and the files they are contained in)
opcache.interned_strings_buffer=8
; The maximum number of files OPcache will cache
opcache.max_accelerated_files=4000
;How often (in seconds) to check file timestamps for changes to the shared
;memory storage allocation.
opcache.revalidate_freq=60
;If enabled, a fast shutdown sequence is used for the accelerated code
;The fast shutdown sequence doesn't free each allocated block, but lets
;the Zend Engine Memory Manager do the work.
opcache.fast_shutdown=1
;Enables the OPcache for the CLI version of PHP.
opcache.enable_cli=1
코드 주석을 사용하는 라이브러리 또는 코드를 사용하는 경우 주석 저장을 활성화해야합니다.
opcache.save_comments=1
비활성화하면 모든 PHPDoc 주석이 코드에서 삭제되어 최적화 된 코드의 크기가 줄어 듭니다. “Doc Comments”를 비활성화하면 기존 응용 프로그램 및 프레임 워크 (예 : Doctrine, ZF2, PHPUnit)가 손상 될 수 있습니다.
답변
나는 opcache를 사용하는 것에 대해 내 2 센트를 떨어 뜨릴 것입니다.
데이터베이스와 대화 할 수 있도록 많은 필드와 유효성 검사 방법 및 열거 형으로 광범위한 프레임 워크를 만들었습니다.
opcache없이
opcache 없이이 스크립트를 사용하고 2.8 초 동안 9000 요청을 아파치 서버에 푸시하면 모든 요청을 따라 잡을 때까지 70-80 초 동안 90-100 % CPU에서 최대 시간을 초과합니다.
Total time taken: 76085 milliseconds(76 seconds)
opcache가 활성화 된 상태
opcache를 활성화하면 약 25 초 동안 25-30 %의 CPU 시간으로 실행되며 25 %의 CPU 사용을 절대로 통과하지 않습니다.
Total time taken: 26490 milliseconds(26 seconds)
나는 정적이며 기능을 변경할 필요가없는 프레임 워크를 제외한 모든 것의 캐싱을 비활성화하기 위해 opcache 블랙리스트 파일을 만들었습니다. 캐시 파일을 다시로드하거나 유효성을 검사하지 않아도 개발할 수 있도록 프레임 워크 파일 만 명시 적으로 선택합니다. 모든 것을 캐시하면 총 요청 시간이 1 초 절약됩니다.25546 milliseconds
이렇게하면 서버가 땀을 흘리지 않고도 초당 처리 할 수있는 데이터 / 요청의 양이 크게 늘어납니다.
답변
Amazon Linux에서 PHP 5.6을 사용하는 경우 (RedHat 또는 CentOS에서 동일해야 함) :
yum install php56-opcache
그런 다음 아파치를 다시 시작하십시오.
답변
무들을 설정할 때이 문제가 발생했습니다. php.ini 파일에 다음 줄을 추가했습니다.
zend_extension=C:\xampp\php\ext\php_opcache.dll
[opcache]
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0
; If something does not work in Moodle
;opcache.revalidate_path = 1 ; May fix problems with include paths
;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487
; Experimental for Moodle 2.6 and later
;opcache.fast_shutdown = 1
;opcache.enable_cli = 1 ; Speeds up CLI cron
;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps
extension=C:\xampp\php\ext\php_intl.dll
[intl]
intl.default_locale = en_utf8
intl.error_level = E_WARNING