현재 위치: > 최신 기사 목록> APCU_ENTRY를 사용하여 RESTFUL API에서 응답 데이터를 캐시하십시오

APCU_ENTRY를 사용하여 RESTFUL API에서 응답 데이터를 캐시하십시오

gitbox 2025-05-14

고성능 RESTFUL API를 구축 할 때는 응답 속도와 시스템 부하가 항상 개발자가 우려하는 핵심 문제입니다. 동일한 데이터를 자주 판독함으로써 발생하는 성능 병목 현상을 해결하기 위해 PHP는 다양한 캐싱 메커니즘을 제공하며, 그 중 APCU_ENTRY 기능은 APCU 사용자 캐시를 사용하는 효율적인 도구입니다. 이 기사에서는 APCU_ENTRY 기능을 사용하여 RESTful API의 응답 데이터를 캐시하여 인터페이스 성능을 크게 향상시키는 방법을 설명합니다.

1. APCU_ENTRY 란 무엇입니까?

APCU_ENTRY 는 PHP APCU Extension에서 제공하는 편리한 기능입니다. 기능은 다음과 같습니다. 캐시에 지정된 키가있을 때 해당 값을 직접 반환합니다. 캐시에 키가 존재하지 않으면 제공된 콜백 함수가 호출되어 데이터를 생성하고 데이터를 캐시에 저장합니다.

함수 서명은 다음과 같습니다.

 mixed apcu_entry(string $key, callable $callback, int $ttl = 0)
  • $ 키 : 캐시 키 이름.

  • $ 콜백 : 캐시가 존재하지 않을 때 실행되는 함수는 데이터를 생성하는 데 사용됩니다.

  • $ ttl : 선택 사항, 캐시 된 만료 시간 (초), 기본값은 절대 만료되지 않습니다.

2. 애플리케이션 시나리오 : Cache RESTFUL API 응답 데이터

제품 정보를 반환하는 RESTFUL API가 있다고 가정하고 각 요청이 데이터베이스에서 읽히므로 압력이 쉽게 증가 할 수 있습니다. APCU_ENTRY를 사용하여 이러한 응답 데이터를 캐시함으로써 데이터베이스 쿼리 수를 효과적으로 줄일 수 있습니다.

다음은 샘플 코드입니다.

 <?php

header('Content-Type: application/json');

// 데이터베이스에서 제품 정보를 얻으려면 시뮬레이션하십시오
function getProductFromDatabase($productId) {
    // 이것이 데이터베이스 쿼리 작업이라고 가정하십시오
    return [
        'id' => $productId,
        'name' => '샘플 제품',
        'price' => 99.99,
        'url' => 'https://gitbox.net/product/' . $productId
    ];
}

// 제품을 얻으십시오 ID
$productId = isset($_GET['id']) ? intval($_GET['id']) : 1;

// 캐시 키 이름을 구성하십시오
$cacheKey = 'product_' . $productId;

// 사용 apcu_entry 캐시 데이터
$product = apcu_entry($cacheKey, function() use ($productId) {
    return getProductFromDatabase($productId);
}, 300); // 은닉처 5 분

echo json_encode([
    'status' => 'success',
    'data' => $product
]);

3. APCU를 활성화하는 방법

APCU_ENTRY를 사용하려면 서버가 APCU 확장자에 설치되어 활성화되어 있는지 확인해야합니다.

  1. 확장자 설치 (데비안 시스템을 예로 들어) :

 sudo apt install php-apcu
  1. php.ini 파일을 편집하고 추가하십시오.

 extension=apcu.so
apc.enable_cli=1
  1. PHP 서비스 다시 시작 :

 sudo systemctl restart php8.1-fpm

4. 주목할만한 것들

  • APCU는 독립형 환경에만 적합하며 멀티 노드 클러스터 배포에는 적합하지 않습니다. API가 여러 서버에서 실행중인 경우 Redis 또는 Memcached와 같은 분산 캐시를 사용하는 것이 좋습니다.

  • APCU_ENTRY 의 캐시는 메모리 레벨이며 PHP 또는 서버를 다시 시작하면 모든 캐시 된 데이터가 지워집니다.

  • 캐시를 사용하는 경우 장기 캐시로 인해 캐시 고장 시간 (TTL)이 데이터 쓸모없는 데이터를 피하기 위해 합리적인지 확인하십시오.

5. 요약

APCU_ENTRY 기능을 통해 PHP 개발자는 추가 라이브러리를 도입하지 않고도 RESTFUL API에 효율적인 로컬 캐싱 메커니즘을 추가 할 수 있습니다. 이는 인터페이스 응답 속도를 향상시킬뿐만 아니라 시스템 부하를 크게 줄이며, 이는 특히 자주 읽기에 적합하지만 매우 가변적 인 데이터는 아닙니다. 중소형 시스템 또는 독립형 API 애플리케이션의 경우 APCU_ENTRY는 가볍고 간단하며 실용적인 성능 최적화 솔루션입니다.