現在の位置: ホーム> 最新記事一覧> 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拡張機能によって提供される便利な機能です。その機能は次のとおりです。キャッシュに指定されたキーがある場合、対応する値を直接返します。キーがキャッシュに存在しない場合、提供されたコールバック関数が呼び出され、データを生成し、データをキャッシュに保存します。

関数の署名は次のとおりです。

 mixed apcu_entry(string $key, callable $callback, int $ttl = 0)
  • $キー:キー名をキャッシュします。

  • $ callback :データの生成に使用されるキャッシュが存在しないときに実行される関数。

  • $ TTL :オプションのキャッシュされた有効期限(秒)、デフォルトでは期限切れになりません。

2。アプリケーションシナリオ: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. 拡張機能をインストールします(Debianシステムを例として使用):

 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は軽量でシンプルで実用的なパフォーマンス最適化ソリューションです。