APC 사용자 캐시
APC 사용자 캐시 (APC User Cache)
APCu(APC User Cache)는 PHP용 인메모리 key-value 저장소예요. PHP 변수 값을 메모리에 캐시해 두고 필요할 때 빠르게 꺼내 쓰는 확장 기능이죠. 이 페이지에서는 APCu가 무엇인지, 어떤 특징과 함수들을 제공하는지 개요를 살펴봐요.
출처: APC User Cache
본문
APCu는 PHP를 위한 인메모리 key-value 저장소입니다. 키(key)는 문자열(string) 타입이고, 값(value)은 PHP 변수라면 무엇이든 담을 수 있어요. 다만 APCu는 사용자 영역(userland) 변수 캐싱만 지원합니다. 다시 말해 PHP 코드 안에서 직접 관리하는 변수 캐시만 담당하고, opcode 캐시 같은 것은 하지 않아요.
한 가지 기억해 둘 점은, **Windows에서는 APCu 캐시가 프로세스별(per-process)**로 동작한다는 것입니다. 그래서 스레드 기반이 아닌 프로세스 기반 SAPI를 쓸 때는 서로 다른 프로세스 간에 캐시가 공유되지 않아요.
APCu의 역사를 잠깐 짚어 보면, APCu는 opcode 캐싱을 뗀 APC입니다. 최초 APCu 코드베이스는 4.0.0 버전으로, 당시 APC master 브랜치의 head에서 포크(fork)되어 나왔어요. 이후 PHP 7 지원은 APCu 5.0.0부터, PHP 8 지원은 APCu 5.1.19부터 가능해졌습니다.
APCu가 제공하는 함수와 클래스는 다음과 같아요.
- APCu 함수
apcu_add— 데이터 저장소에 새 변수를 캐시apcu_cache_info— APCu 데이터 저장소의 캐시 정보 조회apcu_cas— 이전 값을 새 값으로 갱신(compare-and-swap)apcu_clear_cache— APCu 캐시를 비움apcu_dec— 저장된 숫자를 감소apcu_delete— 캐시에서 저장된 변수 제거apcu_enabled— 현재 환경에서 APCu를 사용 가능한지 여부apcu_entry— 캐시 항목을 원자적으로(atomically) 가져오거나 생성apcu_exists— 항목 존재 여부 확인apcu_fetch— 캐시에서 저장된 변수 조회apcu_inc— 저장된 숫자를 증가apcu_key_info— 캐시 키에 대한 상세 정보 조회apcu_sma_info— APCu 공유 메모리 할당(Shared Memory Allocation) 정보 조회apcu_store— 데이터 저장소에 변수 캐시
- APCUIterator 클래스 — APCu 캐시 항목을 순회하는 이터레이터.
__construct,current,getTotalCount,getTotalHits,getTotalSize,key,next,rewind,valid메서드를 제공해요.