현재 위치: > 최신 기사 목록> PHP 코드에서 APCU_ENTRY 캐시를 우아하게 청소하는 방법

PHP 코드에서 APCU_ENTRY 캐시를 우아하게 청소하는 방법

gitbox 2025-05-26

동시 PHP 응용 프로그램에서 캐시의 합리적인 사용은 성능을 향상시키고 데이터베이스 압력을 줄이는 데 중요한 수단입니다. APCU (대체 PHP 캐시 사용자)는 독립형 환경에서 빠른 데이터 액세스에 적합한 가벼운 로컬 캐시 솔루션입니다. APCU_ENTRY 기능은 APCU에서 매우 실용적이고 고급 인터페이스입니다. "읽기 캐시, 쓰기 및 리턴이 존재하지 않으면 우아하게 구현할 수 있습니다". 이 기사는 APCU_ENTRY를 사용하여 캐시를 관리하고 응용 프로그램 성능을 향상 시키며 실제 예제 코드를 첨부하는 방법을 자세히 소개합니다.

1. APCU_ENTRY 란 무엇입니까?

APCU_ENTRY 는 PHP 5.5 이상에서 APCU 확장 기능이 제공하는 함수입니다. 기본 사용량은 다음과 같습니다.

 mixed apcu_entry(string $key, callable $generator [, int $ttl = 0 ])

매개 변수 설명 :

  • $ 키 : 캐시 된 키 이름.

  • $ 생성기 :이 키가 캐시에 존재하지 않을 때 실행되는 콜백 함수는 캐시에 저장되어 반환됩니다.

  • $ ttl : 캐시 된 생존 시간 (초), 기본값은 0이므로 영구적입니다.

이 패턴을 캐시 스탬피드 보호 라고하며, 이는 여러 프로세스가 캐시 고장을 동시에 발견하고 기본 데이터 소스를 요청하는 것을 방지합니다.

2. 시나리오 분석을 사용하십시오

일반적인 시나리오를 상상해보십시오 : 웹 사이트 홈페이지에는 핫스케이트 제품 목록이 표시되어야하며 데이터 의이 부분은 데이터베이스에서 쿼리됩니다. 각 요청에 대해 라이브러리를 직접 확인하면 불필요한 성능 손실이 발생합니다. apcu_entry를 사용 하여이 데이터를 우아하게 캐시 할 수 있습니다.

 $hotProducts = apcu_entry('hot_products', function() {
    // 데이터베이스에서 핫스닝 제품의 읽기 목록을 시뮬레이션하십시오
    return getHotProductsFromDatabase();
}, 300); // 은닉처 5 분

이러한 방식으로 캐시가 존재하면 캐시 데이터가 직접 반환됩니다. 그렇지 않으면 콜백이 실행되어 데이터베이스의 데이터를 읽고 캐시에 씁니다.

3. 우아하게 깨끗한 캐시

실제 비즈니스에서 캐시 된 컨텐츠는 정적이 아닙니다. 예를 들어, 신제품이 핫스닝 목록에 추가되거나 제품 상태가 변경되면 관련 캐시를 청소해야합니다.

APCU_DELETE ()를 적극적으로 호출하여 지정된 캐시를 삭제할 수 있습니다.

 apcu_delete('hot_products');

다음에 액세스 할 때 APCU_ENTRY는 발전기 기능을 호출하여 캐시를 업데이트합니다. 이 방법은 전통적인 apcu_fetch + apcu_store 보다 명확하고 원자력이며, "체크 셋"레이스 조건 문제를 피합니다.

4. 응용 프로그램 실습 : 사용자 정보 캐싱 예

다음은 URL을 결합한 응용 프로그램 예입니다. 원격 인터페이스 (예 : https://gitbox.net/api/user/123 )에서 사용자 정보 얻기를 시뮬레이션하고 다음을 수행합니다.

 function getUserInfo($userId) {
    $cacheKey = "user_info_$userId";
    return apcu_entry($cacheKey, function() use ($userId) {
        // 원격 인터페이스에서 데이터를 얻으려면 시뮬레이션하십시오
        $url = "https://gitbox.net/api/user/$userId";
        $json = file_get_contents($url);
        return json_decode($json, true);
    }, 600); // 은닉처 10 분
}

$user = getUserInfo(123);

인터페이스 데이터가 변경되면 다음을 호출 할 수 있습니다.

 apcu_delete("user_info_123");

특정 사용자의 정보 캐시를 지우려면

5. 성능 향상 비교

기존 캐시 획득 및 쓰기 논리와 비교하여 :

 if (!apcu_exists($key)) {
    $value = expensiveOperation();
    apcu_store($key, $value);
} else {
    $value = apcu_fetch($key);
}

APCU_ENTRY를 사용하면 코드 복잡성을 크게 줄일 수 있지만 더 나은 원자력과 동시성 성능을 가질 수 있습니다. 이것은 높은 교통 환경에서 특히 중요합니다.

6. 요약

APCU_ENTRY 는 APCU에서 매우 강력하고 사용하기 쉬운 기능입니다. 데이터 생성, 캐시 쓰기 및 캐시 읽기를 통합하여 전통적인 캐시 로직에서 중복성 및 경쟁 문제를 피합니다. APCU_DELETE 와 결합하여 캐시를 관리하고 우아하게 청소하여 PHP 응용 프로그램을보다 효율적이고 안정적으로 만들 수 있습니다. APCU_ENTRY를 올바르게 사용하면 더 빠른 반응 형 및 하위로드 된 웹 시스템을 쉽게 구축 할 수 있습니다.