APCU_Entry関数は、APCU拡張機能によって提供される関数であり、キャッシュデータを設定します。 APCU_STOREやAPCU_FETCHとは異なり、 APCU_ENTRYはコールバック関数を自動的に実行して、キャッシュが存在しないときにデータを生成することができるため、複製データ生成プロセスを回避できます。
関数プロトタイプは次のとおりです。
mixed apcu_entry ( string $key , callable $callback , int $ttl = 0 )
$キー:キャッシュキー、キャッシュデータを一意に識別します。
$ callback :キャッシュされたデータを生成するために使用されるコールバック関数。キャッシュが存在しない場合、APCUはコールバック関数を実行してデータを生成します。
$ TTL :キャッシュデータの有効な時間(秒単位)。デフォルトは0です。つまり、キャッシュが期限切れになることはありません。
APCU_Entryでは、 TTLパラメーターを使用して、キャッシュの有効な時間を設定します。有効期限が切れた後、キャッシュは失効し、APCUはキャッシュされたデータを再生します。 TTLを合理的に設定することにより、キャッシュされたデータが時間内に更新されるようにし、キャッシュの有効期限による問題を回避できます。
頻繁にアクセスする必要があり、5分間(300秒)キャッシュする必要があるデータベースクエリの結果があるとします。以下に示すように、 APCU_Entryを使用してキャッシュの有効な時間を設定できます。
<?php
// これがデータベースを照会する関数であるとします
function fetchDataFromDatabase() {
// データベースからデータを取得することをシミュレートします
return "This is the data fetched from the database!";
}
// 使用 apcu_entry キャッシュクエリの結果,キャッシュの有効な時間を設定します 5 分
$data = apcu_entry('database_data', 'fetchDataFromDatabase', 300);
// 出力キャッシュまたはデータベースクエリの結果
echo $data;
?>
この例では、 APCU_Entryと呼ばれる場合、キャッシュに「Database_Data」という名前のデータがない場合、APCUはFetchDataFromDataBase関数を実行してデータを取得し、結果を5分間キャッシュします。 5分以内にキャッシュが再度要求された場合、APCUはキャッシュされたデータを直接返します。
場合によっては、データの変更がキャッシュの有効期限と一致しない場合があります。キャッシュされたデータが常に最新であることを確認するために、プログラムでキャッシュを更新できます。これにより、適切な時期にAPCU_DELETEを呼び出してから、 APCU_ENTRYを介してキャッシュを再生することにより、キャッシュを削除できます。
<?php
// キャッシュを更新する必要があるとします
if (someConditionToRefreshCache()) {
// 古いキャッシュデータを削除します
apcu_delete('database_data');
}
// 次に、キャッシュされたデータを再生します
$data = apcu_entry('database_data', 'fetchDataFromDatabase', 300);
// 出力キャッシュまたはデータベースクエリの結果
echo $data;
?>
この例では、特定の条件が満たされた場合にのみ、キャッシュが手動で更新されます。これは、キャッシュされたコンテンツがタイムリーに更新されることを保証するための戦略です。
キャッシュの有効期限の選択時間:適切なキャッシュの有効期間を設定することが非常に重要です。設定時間が長すぎる場合、データが長い間更新されない場合があります。設定が短すぎると、キャッシュが頻繁に再生される可能性があり、パフォーマンスの損失が発生します。
スレッドの安全性: APCU_Entry自体はスレッドセーフですが、高い並行性環境では、コールバック機能自体を安全に実行できることを確認することが非常に重要です。