>백엔드 개발 >PHP 튜토리얼 >PHP APC에 대해 얼마나 알고 있나요?

PHP APC에 대해 얼마나 알고 있나요?

WBOY
WBOY원래의
2016-07-25 08:59:591077검색
일반적인 APC 기능, 일반적인 APC 구성, APC의 장점 등을 포함하여 PHP APC 관련 지식을 소개하고 도움이 필요한 친구들이 참고할 수 있도록 합니다.

apc 정의: apc는 개방형 무료 PHP opcode 캐시입니다. 그 목표는 PHP 중간 코드를 캐싱하고 최적화하기 위한 무료 개방형 건전한 프레임워크를 제공하는 것입니다.

1. apc 공통 기능: 1.apc_clear_cache()는 apc 캐시 내용을 지웁니다. 2.apc_define_constants(string key,array Constants,[,bool case_sensitive]) 배열 상수를 캐시에 상수로 추가합니다. 3.apc_load_constants(string key)는 상수 캐시를 꺼냅니다. 4.apc_store(string key,mixed var [, int ttl]) 캐시에 데이터 저장 5.apc_fetch(string key)는 apc_store에 저장된 캐시 데이터를 가져옵니다. 6.apc_delete(string key)는 apc_store에 저장된 내용을 삭제합니다. 7.apc_add(string key,mixd var [, int ttl])는 변수를 데이터 저장소에 캐시합니다(변수가 이전에 저장되지 않은 경우에만). 8.apc_exists(mix key)는 하나 이상의 apc 키 이름이 존재하는지 확인합니다. 9.apc_delete_file(혼합 키)은 opcode 캐시에서 지정된 파일의 캐시를 삭제합니다. 10.apc_compile_file(string filename [,bool atmic=true])은 필터 및 캐시 파일의 제한을 우회합니다. 11.apc_cache_info(string 캐시_type [,bool Limited=false]) 캐시 가져오기 i-type 밀크쉐이크 참고: apc_clear_cache는 opcode 캐시 파일만 지우고, apc_delete는 캐시의 변수를 지웁니다. 사전 정의된 변수의 경우 apc_define_constants 함수를 사용할 수 있으며, memcache보다 apc를 사용하는 것이 더 좋습니다. apc는 네트워크 전송 프로토콜을 거칠 필요가 없습니다. apc_store 함수를 통해 자주 변경되는 사용자 데이터를 캐싱하는 데 적합합니다. apc 자체는 배포를 지원하지 않습니다.

2. apc 공통 구성: 1. apc에 할당할 메모리 양, ini 옵션 apc.shm_size(정수)가 이 설정을 제어합니다. 기본값은 30M입니다. 2. apc가 요청될 때마다 파일 수정 사항을 확인할지 여부. ini 옵션 apc.stat는 이 설정을 제어합니다. 이는 스크립트가 요청될 때마다 스크립트가 업데이트되는지 여부를 의미합니다. 콘텐츠는 자동으로 다시 컴파일되고 캐시되며 성능에 비례하는 영향을 미치므로 이 값은 0으로 설정됩니다. 3.ini 옵션 apc.filters를 통해 스크립트 캐시 줄이기

3. APC의 장점: 1. 최고의 성능을 달성하기 위해 스핀록(spinlock) 잠금 메커니즘을 사용합니다. 2.apc는 apc 캐시를 모니터링하고 관리하기 위한 apc.php를 제공합니다. (참고: 관리자 이름과 비밀번호를 변경하세요) 3.apc는 기본적으로 mmap 익명 매핑을 통해 공유 메모리를 생성하며, 이 대용량 메모리 공간에 캐시 객체가 저장됩니다. 공유 메모리는 apc 자체에서 관리됩니다. 4. apc.shm_size, apc.num_files_hints, apc.user_entires_hint 값을 최상으로 조정하세요 5.php 사전 정의된 상수, apc _define——constants() 함수를 사용할 수 있습니다. 그러나 APC 개발자들은 pecl hidef가 성능이 더 좋고 정의를 포기하는 것은 비효율적이라고 말합니다. 6.apc_store, 시스템 설정과 같은 PHP 변수의 경우 수명 주기는 전체 애플리케이션(httpd 데몬에서 httpd 데몬 종료까지)이므로 apc를 사용하는 것이 memcache보다 낫습니다. (네트워크 전송 프로토콜을 거칠 필요가 없습니다) 7.apc는 apc_store() 함수를 통해 캐시된 사용자 데이터를 자주 변경하는 데 적합하지 않으며 몇 가지 이상한 현상이 발생합니다.

예:

<?php
/**
*php apc示例
* by http://bbs.it-home.org
*/
$constants = array('APC_FILE'=>'apc.php','AUTHOR'=>'tim');
apc_define_constants('memb',$constants );
apc_load_constants('memb');
//echo APC_FILE;
//echo AUTHOR;
 
if(!apc_fetch('time1')) apc_store('time1',time());
if(!apc_fetch('time2')) apc_store('time2',time(),2);
//echo apc_fetch('time1');
//echo apc_fetch('time2');
 
class a{
     public function b(){echo 'success';}
}
apc_store('obj',new a());
$a = apc_fetch('obj');
//$a-b();
 
$ret = apc_exists(array('foo', 'donotexist', 'bar'));
//array(2) { ["foo"]=> bool(true) ["bar"]=> bool(true) }
?>

첨부된 세부 구성 지침: apc.cache_by_default = 켜짐 ;sys ; 모든 파일에 대해 기본적으로 버퍼링을 활성화할지 여부. ; off로 설정하고 더하기 기호로 시작하는 apc.filters 지시문과 함께 사용하면 파일은 필터와 일치하는 경우에만 캐시됩니다. apc.enable_cli = 꺼짐 ;sys ; cli 버전에 대해 apc 기능을 활성화할지 여부는 테스트 및 디버깅 목적으로만 이 지시문을 활성화합니다. apc.enabled = 켜짐 ; apc를 활성화할지 여부. apc가 PHP로 정적으로 컴파일되고 이를 비활성화하려는 경우 이것이 유일한 방법입니다. apc.file_update_protection = 2 ;sys ; 실행 중인 서버에서 파일을 수정할 때는 원자성 작업을 수행해야 합니다. ; 즉, 먼저 임시 파일에 쓴 다음 파일 이름을 최종 이름으로 변경(mv)합니다. ; cp 및 tar와 같은 텍스트 편집기 및 프로그램은 이러한 방식으로 작동하지 않으므로 불완전한 파일을 버퍼링할 가능성이 있습니다. ; 기본값 2는 파일에 액세스할 때 수정 시간이 액세스 시간보다 2초 미만인 것으로 확인되면 버퍼링이 수행되지 않음을 의미합니다. ; 불운한 방문자는 콘텐츠가 손상될 수 있지만 캐싱으로 인해 나쁜 영향이 증폭되지는 않습니다. ; 모든 업데이트 작업이 원자적으로 이루어지도록 보장할 수 있으면 0으로 이 기능을 끌 수 있습니다. ; 과도한 IO 작업으로 인해 시스템 업데이트가 느리게 진행되는 경우 이 값을 늘려야 할 수도 있습니다. apc.필터 = ;sys ; 쉼표로 구분된 POSIX 확장 정규식 목록입니다. ; 소스 파일 이름이 패턴과 일치하면 파일이 캐시되지 않습니다. ; 일치하는 데 사용되는 파일 이름은 절대 경로가 아니라 포함/요구에 전달된 파일 이름입니다. ; 정규식의 첫 번째 문자가 " "이면 해당 표현식과 일치하는 모든 파일이 캐시된다는 의미입니다. ; 첫 번째 문자가 "-"이면 일치하는 항목이 캐시되지 않습니다. "-"는 기본값이며 생략 가능합니다. apc.ttl = 0 ;sys ; 캐시 항목이 버퍼에 머무를 수 있는 시간(초)입니다. 0은 시간 초과가 발생하지 않음을 의미합니다. 권장값은 7200~36000입니다. ; 0으로 설정하면 버퍼가 이전 캐시 항목으로 채워져 새 항목이 캐시되지 않을 수 있습니다. apc.user_ttl = 0 ;sys ; apc.ttl과 비슷하지만 각 사용자별로 권장되는 값은 7200~36000입니다. ; 0으로 설정하면 버퍼가 이전 캐시 항목으로 채워져 새 항목이 캐시되지 않을 수 있습니다. apc.gc_ttl = 3600 ;sys ; 캐시 항목이 가비지 수집 테이블에 존재할 수 있는 시간(초)입니다. ; 이 값은 캐시된 소스 파일을 실행하는 동안 서버 프로세스가 충돌하는 경우에도 안전 조치를 제공합니다. ; 그리고 소스 파일이 수정된 경우, 이전 버전에 할당된 메모리는 이 ttl 값에 도달할 때까지 회수되지 않습니다. ; 이 기능을 비활성화하려면 0으로 설정하세요. apc.include_once_override = 꺼짐 ;sys ; 현재 이 명령에 대한 문서는 없습니다. http://pecl.php.net/bugs/bug.php?id=8754를 참조하세요. ; 꺼두십시오. 그렇지 않으면 예상치 못한 결과가 발생할 수 있습니다. apc.max_file_size = 1m ;sys ; 이 크기보다 큰 파일이 캐시되는 것을 방지합니다. apc.mmap_file_mask= ;sys ; --enable-mmap을 사용하여 mmap 지원이 apc용으로 컴파일된 경우(기본적으로 활성화됨) ; 여기의 값은 mmap 모듈에 전달된 mktemp 스타일 파일 마스크입니다(권장 값은 "/tmp/apc.xxxxxx"). ; 이 마스크는 메모리 매핑된 영역이 파일 기반인지 공유 메모리 기반인지 결정하는 데 사용됩니다. ; 직접 파일 기반 메모리 매핑의 경우 "/tmp/apc.xxxxxx"(정확히 6 x)로 설정합니다. ; posix 스타일 shm_open/mmap을 사용하려면 "/apc.shm.xxxxxx"로 설정해야 합니다. ; 익명으로 매핑된 메모리에 대해 커널의 "/dev/zero" 인터페이스를 사용하려면 "/dev/zero"로 설정할 수도 있습니다. ; 이 지시문을 정의하지 않으면 익명 매핑이 사용됩니다. apc.num_files_hint = 1000 ;sys ; 웹 서버에 포함되거나 요청될 수 있는 다양한 소스 파일의 대략적인 개수(권장 값은 1024~4096). ; 확실하지 않은 경우 0으로 설정하세요. 이 설정은 주로 수천 개의 소스 파일이 있는 사이트에 사용됩니다. apc.최적화 = 0 ; 최적화 수준(권장값은 0). ; 양의 정수 값은 더 공격적인 최적화를 사용하여 더 높은 값으로 최적화 프로그램을 활성화합니다. ; 값이 높을수록 속도 향상이 매우 제한될 수 있지만 현재는 실험적입니다. apc.report_autofilter = 꺼짐 ;sys ; 초기/지연 바인딩으로 인해 자동으로 캐시되지 않는 모든 스크립트를 기록할지 여부. apc.shm_segments = 1 ;sys ; 컴파일러 버퍼에 할당된 공유 메모리 블록 수(권장 값은 1). ; apc가 공유 메모리를 모두 사용했고 apc.shm_size 지시어가 시스템에서 허용하는 최대값으로 설정된 경우 ; 이 값을 늘려볼 수 있습니다. apc.shm_size = 30 ;sys ; 각 공유 메모리 블록의 크기(MB 단위, 권장 값은 128~256). ; 일부 시스템(대부분의 bsd 변형 포함)은 기본 공유 메모리 블록 크기가 매우 작습니다. apc.slam_defense = 0 ;sys (이 명령을 사용하는 것에 반대됩니다. apc.write_lock 명령을 사용하는 것이 좋습니다) ; 사용량이 많은 서버에서는 서비스를 시작하거나 파일을 수정하는 경우 ; 동시에 파일을 캐시하려고 하는 여러 프로세스로 인해 경쟁 조건이 발생할 수 있습니다. ; 이 지시문은 캐시되지 않은 파일을 처리할 때 프로세스가 캐싱 단계를 건너뛰는 비율을 설정하는 데 사용됩니다. 예를 들어, 75로 설정하면 캐시되지 않은 파일이 발견될 때 캐시되지 않을 확률이 75%이므로 충돌 가능성이 줄어듭니다. ; 이 기능을 비활성화하려면 0으로 설정하는 것이 좋습니다. apc.stat = 켜짐 ;sys ; 스크립트 업데이트 확인을 활성화할지 여부. ; 이 지시문 값을 변경할 때는 매우 주의하십시오.; 기본값은 apc가 요청될 때마다 스크립트가 업데이트되었는지 여부를 확인한다는 의미입니다. ; 업데이트되면 컴파일된 콘텐츠를 자동으로 다시 컴파일하고 캐시합니다. 그러나 그렇게 하면 성능에 부정적인 영향을 미칩니다. ; off로 설정하면 검사를 수행하지 않으므로 성능이 크게 향상됩니다. ; 하지만 업데이트된 내용을 적용하려면 웹 서버를 다시 시작해야 합니다. ; 이 지시어는 include/require 파일에도 유효합니다. 그러나 주목해야 할 점은 ; 상대 경로를 사용하는 경우 apc는 include/require마다 파일 위치를 확인해야 합니다. ; 절대 경로를 사용하면 검사를 건너뛸 수 있으므로 포함/요구 작업에 절대 경로를 사용하는 것이 좋습니다. apc.user_entries_hint = 100 ;sys ; num_files_hint 지시문과 비슷하지만 사용자마다 다릅니다. ; 확실하지 않은 경우 0으로 설정하세요. apc.write_lock = 켜짐 ;sys ; 쓰기 잠금 활성화 여부. ; 사용량이 많은 서버에서는 서비스를 시작하거나 파일을 수정하는 경우 ; 동시에 파일을 캐시하려고 하는 여러 프로세스로 인해 경쟁 조건이 발생할 수 있습니다. ; 경쟁 조건을 방지하려면 이 지시문을 활성화합니다. apc.rfc1867 = 꺼짐 ;sys ; 이 지시문을 활성화한 후 파일 필드 바로 앞에 apc_upload_progress 필드가 포함된 업로드된 각 파일에 대해 ; apc는 upload_(apc_upload_progress 필드 값)에 대한 사용자 캐시 항목을 자동으로 생성합니다.



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