동시 PHP 응용 프로그램에서 캐시의 합리적인 사용은 성능을 향상시키고 데이터베이스 압력을 줄이는 데 중요한 수단입니다. APCU (대체 PHP 캐시 사용자)는 독립형 환경에서 빠른 데이터 액세스에 적합한 가벼운 로컬 캐시 솔루션입니다. APCU_ENTRY 기능은 APCU에서 매우 실용적이고 고급 인터페이스입니다. "읽기 캐시, 쓰기 및 리턴이 존재하지 않으면 우아하게 구현할 수 있습니다". 이 기사는 APCU_ENTRY를 사용하여 캐시를 관리하고 응용 프로그램 성능을 향상 시키며 실제 예제 코드를 첨부하는 방법을 자세히 소개합니다.
APCU_ENTRY 는 PHP 5.5 이상에서 APCU 확장 기능이 제공하는 함수입니다. 기본 사용량은 다음과 같습니다.
mixed apcu_entry(string $key, callable $generator [, int $ttl = 0 ])
매개 변수 설명 :
$ 키 : 캐시 된 키 이름.
$ 생성기 :이 키가 캐시에 존재하지 않을 때 실행되는 콜백 함수는 캐시에 저장되어 반환됩니다.
$ ttl : 캐시 된 생존 시간 (초), 기본값은 0이므로 영구적입니다.
이 패턴을 캐시 스탬피드 보호 라고하며, 이는 여러 프로세스가 캐시 고장을 동시에 발견하고 기본 데이터 소스를 요청하는 것을 방지합니다.
일반적인 시나리오를 상상해보십시오 : 웹 사이트 홈페이지에는 핫스케이트 제품 목록이 표시되어야하며 데이터 의이 부분은 데이터베이스에서 쿼리됩니다. 각 요청에 대해 라이브러리를 직접 확인하면 불필요한 성능 손실이 발생합니다. apcu_entry를 사용 하여이 데이터를 우아하게 캐시 할 수 있습니다.
$hotProducts = apcu_entry('hot_products', function() {
// 데이터베이스에서 핫스닝 제품의 읽기 목록을 시뮬레이션하십시오
return getHotProductsFromDatabase();
}, 300); // 은닉처 5 분
이러한 방식으로 캐시가 존재하면 캐시 데이터가 직접 반환됩니다. 그렇지 않으면 콜백이 실행되어 데이터베이스의 데이터를 읽고 캐시에 씁니다.
실제 비즈니스에서 캐시 된 컨텐츠는 정적이 아닙니다. 예를 들어, 신제품이 핫스닝 목록에 추가되거나 제품 상태가 변경되면 관련 캐시를 청소해야합니다.
APCU_DELETE ()를 적극적으로 호출하여 지정된 캐시를 삭제할 수 있습니다.
apcu_delete('hot_products');
다음에 액세스 할 때 APCU_ENTRY는 발전기 기능을 호출하여 캐시를 업데이트합니다. 이 방법은 전통적인 apcu_fetch + apcu_store 보다 명확하고 원자력이며, "체크 셋"레이스 조건 문제를 피합니다.
다음은 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");
특정 사용자의 정보 캐시를 지우려면
기존 캐시 획득 및 쓰기 논리와 비교하여 :
if (!apcu_exists($key)) {
$value = expensiveOperation();
apcu_store($key, $value);
} else {
$value = apcu_fetch($key);
}
APCU_ENTRY를 사용하면 코드 복잡성을 크게 줄일 수 있지만 더 나은 원자력과 동시성 성능을 가질 수 있습니다. 이것은 높은 교통 환경에서 특히 중요합니다.
APCU_ENTRY 는 APCU에서 매우 강력하고 사용하기 쉬운 기능입니다. 데이터 생성, 캐시 쓰기 및 캐시 읽기를 통합하여 전통적인 캐시 로직에서 중복성 및 경쟁 문제를 피합니다. APCU_DELETE 와 결합하여 캐시를 관리하고 우아하게 청소하여 PHP 응용 프로그램을보다 효율적이고 안정적으로 만들 수 있습니다. APCU_ENTRY를 올바르게 사용하면 더 빠른 반응 형 및 하위로드 된 웹 시스템을 쉽게 구축 할 수 있습니다.