현재 위치: > 최신 기사 목록> apcu_entry를 통해 JSON 데이터 및 객체를 캐시하는 방법

apcu_entry를 통해 JSON 데이터 및 객체를 캐시하는 방법

gitbox 2025-05-18

APCU_ENTRY 는 PHP에서 제공하는 APCU (대체 PHP 캐시) 캐시 기능입니다. APCU는 PHP 스크립트의 변수를 캐시하도록 설계된 사용자 수준 캐시입니다. APCU는 메모리에 데이터를 저장함으로써 데이터베이스 또는 파일 시스템에 대한 액세스 수를 효과적으로 줄여 성능을 향상시킬 수 있습니다.

APCU_ENTRY 기능의 기능은 캐시에 특정 데이터가 있는지 확인하는 것입니다. 존재하면 데이터가 캐시에서 직접 가져옵니다. 존재하지 않으면 데이터가 계산되고 결과는 캐시에 저장됩니다. 이 프로세스는 반복 계산을 피할뿐만 아니라 캐시의 효과를 보장합니다.

apcu_entry 함수의 기본 구문 :

 apcu_entry(string $key, callable $callback, int $ttl = 0)
  • $ 키 : 캐시 된 키 이름은 캐시 된 데이터를 고유하게 식별하는 데 사용됩니다.

  • $ 콜백 : 캐시 된 컨텐츠를 계산하는 데 사용되는 폐쇄 (콜백). 클로저는 캐시가 존재하지 않는 경우에만 실행됩니다.

  • $ ttl : 캐시 된 만료 시간, 초 (선택적 매개 변수).

apcu_entry를 사용하여 JSON 데이터를 캐시하십시오

JSON 데이터는 종종 PHP 응용 프로그램에서 프론트 엔드와 데이터를 교환하거나 데이터베이스에 저장된 데이터를 교환합니다. 경우에 따라 외부 인터페이스에서 JSON 데이터를 가져 와서 자주 사용해야합니다. 매번 외부 인터페이스를 요청하지 않기 위해 APCU_ENTRY를 사용하여 JSON 데이터를 메모리로 캐시하여 중복 네트워크 요청을 줄이고 성능을 향상시킬 수 있습니다.

예 : 외부 API가 가져온 캐시 JSON 데이터

외부 API (예 : GitHub API)가 있고 사용자 정보를 얻고 캐시해야한다고 가정합니다. APCU_ENTRY를 사용하면이 API에 자주 액세스 할 수 있습니다.

 <?php
// 캐시 된 키 이름을 정의하십시오
$key = 'github_user_data';

// 사용 apcu_entry 은닉처 JSON 데이터
$user_data = apcu_entry($key, function() {
    // 외부에서 시뮬레이션하십시오 API 获取데이터
    $url = 'https://api.github.com/users/octocat';
    
    // 보내다 GET 요청하고 얻습니다 JSON 응답
    $json_data = file_get_contents($url);
    
    // 将응답转换为 PHP 정렬
    return json_decode($json_data, true);
}, 3600); // 设置은닉처 1 시간(3600두번째)

// 输出은닉처或获取到的데이터
echo 'User Name: ' . $user_data['login'] . "\n";
echo 'User Bio: ' . $user_data['bio'] . "\n";
?>

위의 예에서 APCU_ENTRY는 GitHub 사용자 데이터가 캐시되었는지 확인합니다. 캐시가 존재하면 캐시 결과를 직접 반환합니다. 캐시가 존재하지 않으면 외부 API에 액세스하여 file_get_contents 함수를 통해 데이터를 얻은 다음 데이터를 캐시에 저장하고 캐시 만료 시간을 1 시간으로 설정하십시오.

알아채다:

  • APCU_ENTRY는 메모리에 캐시 된 데이터를 저장하기 때문에 비교적 작고 자주 액세스하는 데이터에 적합합니다. 지속성이 필요한 더 큰 데이터 세트 또는 데이터의 경우 다른 캐싱 체계 (예 : Redis 또는 Memcached)가 권장됩니다.

  • APCU_ENTRY 는 메모리 기반 캐시이므로 스토리지가 일시적이며 PHP 스크립트가 종료되면 캐시가 만료됩니다.

apcu_entry 가있는 캐시 개체

JSON 데이터 외에도 APCU_ENTRY를 사용하여 PHP 객체를 캐시 할 수도 있습니다. 많은 시나리오에서 PHP 객체는 복잡한 계산 또는 데이터베이스에서 많은 양의 데이터를 쿼리해야합니다. 이 객체를 캐싱하면 프로그램의 응답 속도가 크게 향상 될 수 있습니다.

예 : 캐시 데이터베이스 쿼리 결과는 객체입니다

객체에 캡슐화되어야하는 데이터베이스 쿼리 결과가 있다고 가정하고 요청할 때마다 데이터베이스 쿼리를 피하기 위해 객체를 캐시 할 수 있습니다.

 <?php
class User
{
    public $id;
    public $name;
    public $email;

    public function __construct($id, $name, $email)
    {
        $this->id = $id;
        $this->name = $name;
        $this->email = $email;
    }
}

// 캐시 된 키 이름을 정의하십시오
$key = 'user_data_123';

// 사용 apcu_entry 은닉처데이터库查询结果
$user = apcu_entry($key, function() {
    // 模拟从데이터库获取데이터
    $id = 123;
    $name = 'John Doe';
    $email = '[email protected]';

    // 만들다 User 대상과 반환
    return new User($id, $name, $email);
}, 3600); // 设置은닉처 1 시간(3600두번째)

// 输出은닉처或获取到的데이터
echo 'User Name: ' . $user->name . "\n";
echo 'User Email: ' . $user->email . "\n";
?>

이 예에서는 apcu_entry를 사용하여 사용자 객체를 캐시합니다. APCU_ENTRY가 요청할 때마다 APCU_ENTRY는 이 개체가 캐시에 이미 존재하는지 확인합니다. 존재하면 캐시 된 물체를 직접 반환합니다. 캐시가 존재하지 않으면 새 객체를 생성하고 캐시합니다.

알아채다:

  • 캐시에 저장되기 전에 객체를 직렬화해야합니다. APCU는 객체의 직렬화 및 사막화를 자동으로 처리하므로 개발자는 수동으로 작동 할 필요가 없습니다.

  • 캐시가 만료되면 새 요청은 결과를 다시 계산하고 캐시합니다.