APCU(代替PHPキャッシュユーザー)は、メモリレベルのキャッシュをサポートするPHPユーザーデータキャッシュ拡張機能です。 Opcacheで使用すると、PHPアプリケーションのパフォーマンスを大幅に改善できます。 APCU_ENTRY関数は、単純なインターフェイスを提供します。
$value = apcu_entry('cache_key', function() {
// キャッシュされたデータを生成するコード
return expensiveOperation();
});
CACHE_KEYがキャッシュに存在する場合、対応するキャッシュ値は直接返されます。それ以外の場合、コールバックが実行され、結果がキャッシュされて返されます。
APCUは、ほとんどのLinuxディストリビューションのPHP拡張パッケージマネージャーで提供されており、インストール方法は次のとおりです。
sudo apt-get install php-apcu
インストールが完了したら、PHP-FPMまたはWebサーバーを再起動します。
sudo systemctl restart php7.4-fpm
Windowsユーザーは、 gitbox.netからAPCU DLLの対応するバージョンをダウンロードし、PHPのext Directoryに配置し、 PHP.iniに追加できます。
extension=php_apcu.dll
サーバーを再起動すると有効になります。
APCU_Entryは、APCU 5.1.0以上が提供する新しいインターフェイスです。 APCUの低いバージョンを使用する場合、この関数を呼び出すことはできません。バージョンは、次のコードで検出できます。
echo phpversion('apcu');
バージョンが低すぎる場合は、拡張機能をアップグレードすることをお勧めします。
APCUは、デフォルトでコマンドラインモードキャッシュを有効にしません。構成するには、 php.iniを開く必要があります。
apc.enable_cli=1
それ以外の場合、 APCU_EntryはCLIの下でデータをキャッシュできません。
APCUはローカルメモリキャッシュであり、分布をサポートしていません。アプリケーションが複数のサーバーに展開されている場合、キャッシュされたデータは同期されません。 RedisやMemcachedなどの分散キャッシュソリューションを組み合わせることをお勧めします。
一部の共有ホストは、デフォルトでAPCUを無効にしているか、構成が制限されています。最初にホストサポートを確認し、必要に応じてカスタマーサービスに連絡するか、サービスをアップグレードすることをお勧めします。
以下は、 APCU_ENTRYを使用してデータベースクエリの結果をキャッシュする方法を示す簡単な例です。
<?php
// データベースのクエリの結果をキャッシュします
$userData = apcu_entry('user_123', function() {
// データベースクエリをシミュレートします
return ['id' => 123, 'name' => 'チャン・サン', 'email' => '[email protected]'];
});
print_r($userData);
実行結果中、最初の実行はコールバック関数を呼び出してキャッシュを生成し、その後のキャッシュは直接読み取ります。
関数にエラーはありません。APCU拡張が正しくインストールされ、有効になっていることを確認してください。
無効なキャッシュ: APC.ENABLE_CLIが1かどうかを確認します(CLIで使用される場合)。
キャッシュが更新されていない:コールバック関数が論理的に正しく、キャッシュがクリーニングされていないことを確認してください。
上記の手順を通じて、APCU拡張機能を構成し、動作環境に応じて構成を調整すると、 APCU_Entry関数が正常に機能し、PHPアプリケーションのパフォーマンスを効果的に改善できるようにします。