Symfonyキャッシュコンポーネントを使用してPHPでキャッシュを設定する
今日は、PHPアプリケーションにキャッシュを追加する簡単な方法であるSymfonyキャッシュコンポーネントを示します.ページのロード時間を短縮することで、アプリケーション全体のパフォーマンスを向上させることができます.
Symfonyキャッシュコンポーネント
Symfonyキャッシュコンポーネントを使用すると、PHPアプリケーションでキャッシュを設定できます.このコンポーネント自体はインストールと構成が非常に容易で、迅速に導入できます.また、次の表に示すように、複数のアダプタを選択できます.データベースアダプタ ファイルシステムアダプタ メモリキャッシュアダプタ Redisアダプタ APCuアダプタ およびそれ以上の Symfonyキャッシュコンポーネントを使用してキャッシュする場合は、いくつかの用語を熟知する必要があります.
まず、キャッシュ・アイテムとは、格納されたコンテンツを指します.各アイテムはキー値ペアとして保存されます.キャッシュ・アイテムは、論理グループ化されたキャッシュ・プールによって管理されます.実際には、キャッシュプールを使用してキャッシュ値を操作する必要があります.最後に、キャッシュアダプタによってすべての煩雑な作業が完了し、プロジェクトをキャッシュバックエンドに格納します.
本稿ではSymfony Cacheコンポーネントの機能を解放する方法を検討する.従来と同様に、インストールと構成から始め、本稿の後半で実際の例を検討し続けます.
インストールと構成
このセクションではCacheコンポーネントをインストールします.システムにComposerがインストールされていると仮定し、Packagistで使用可能なCacheコンポーネントをインストールする必要があります.
Composerをインストールした後、次のコマンドを続行してCacheコンポーネントをインストールしてください.
それはcomposerを作成したはずです.jsonファイルは、次のように見えます.
インストールは完了しましたが、アプリケーションに追加するにはどうすればいいですか?アプリケーションにComposerによって作成されたautoloadを含めるだけです.phpファイルは、以下のコードクリップに示すようにできます.
実例
このセクションでは、アプリケーションでCacheコンポーネントを使用してコンテンツをキャッシュする方法の例を示します.
まず、以下のindexを作成し続けましょう.phpファイル.
indexを参照しましょう.phpファイルの主な部分は、それらの用途を理解します.
キャッシュプールの作成
前述したように、キャッシュされたアイテムはキャッシュプールに格納されます.また、各キャッシュプールは、特定のキャッシュバックエンドとアダプタによってサポートされています.たとえば、プロジェクトをファイルシステムキャッシュに格納する場合は、ファイルシステムアダプタのキャッシュプールを初期化する必要があります.キャッシュエントリを作成する名前空間 キャッシュ項目の生存時間(秒単位) は、キャッシュされたディレクトリを格納する.
文字列値の格納方法
キャッシュ・プールを作成したため、バッファ・エントリを格納するために使用できます.
まず,
プロジェクトをキャッシュに格納しました.キャッシュから取得する方法を見てみましょう.
ここでは、
次に、キャッシュ・プールからすべてのキャッシュ・アイテムを削除する方法を見てみましょう.
配列値の格納方法
前節では、キャッシュ・プールに基本値を格納する方法について説明しました.次の例に示すように、格納配列の値はほぼ同じです.
ご覧のように、文字列のようにキャッシュ・アイテムを配列値に簡単に設定できます.
次に、キャッシュ・プールから特定のキャッシュ・アイテムを削除する方法を見てみましょう.
ここでは、
キャッシュ・アイテムの有効期限の設定方法
これまで、プロジェクトはプールにキャッシュされており、満期日はありません.ただし、通常、プロジェクトをキャッシュに永続的に保存することは望ましくありません.たとえば、キャッシュ・アイテムを定期的にリフレッシュする場合は、期限切れのキャッシュ・アイテムを消去するメカニズムが必要です.
このセクションでは、キャッシュにアイテムと有効期限を格納する方法について説明します.
上記のコード・セグメントで説明したように、
我々の例では、
テストを続け、どのように動作するかを確認します.
結論
ここでは、PHPアプリケーションでキャッシュを設定できるSymfonyキャッシュコンポーネントについて簡単に説明します.また、使用するバックエンドタイプを柔軟に選択できるキャッシュアダプタもサポートされています.
以下の表を使って、あなたの考えや疑問を自由に表現してください.
翻訳:https://code.tutsplus.com/tutorials/set-up-caching-in-php-with-the-symfony-cache-component--cms-31498
Symfonyキャッシュコンポーネント
Symfonyキャッシュコンポーネントを使用すると、PHPアプリケーションでキャッシュを設定できます.このコンポーネント自体はインストールと構成が非常に容易で、迅速に導入できます.また、次の表に示すように、複数のアダプタを選択できます.
まず、キャッシュ・アイテムとは、格納されたコンテンツを指します.各アイテムはキー値ペアとして保存されます.キャッシュ・アイテムは、論理グループ化されたキャッシュ・プールによって管理されます.実際には、キャッシュプールを使用してキャッシュ値を操作する必要があります.最後に、キャッシュアダプタによってすべての煩雑な作業が完了し、プロジェクトをキャッシュバックエンドに格納します.
本稿ではSymfony Cacheコンポーネントの機能を解放する方法を検討する.従来と同様に、インストールと構成から始め、本稿の後半で実際の例を検討し続けます.
インストールと構成
このセクションではCacheコンポーネントをインストールします.システムにComposerがインストールされていると仮定し、Packagistで使用可能なCacheコンポーネントをインストールする必要があります.
Composerをインストールした後、次のコマンドを続行してCacheコンポーネントをインストールしてください.
$composer require symfony/cache
それはcomposerを作成したはずです.jsonファイルは、次のように見えます.
{
"require": {
"symfony/cache": "^4.1"
}
}
インストールは完了しましたが、アプリケーションに追加するにはどうすればいいですか?アプリケーションにComposerによって作成されたautoloadを含めるだけです.phpファイルは、以下のコードクリップに示すようにできます.
実例
このセクションでは、アプリケーションでCacheコンポーネントを使用してコンテンツをキャッシュする方法の例を示します.
まず、以下のindexを作成し続けましょう.phpファイル.
getItem('demo_string');
if (!$demoString->isHit())
{
$demoString->set('Hello World!');
$cachePool->save($demoString);
}
if ($cachePool->hasItem('demo_string'))
{
$demoString = $cachePool->getItem('demo_string');
echo $demoString->get();
echo "
";
}
// delete all items
$cachePool->clear();
if (!$cachePool->hasItem('demo_string'))
{
echo "The cache entry demo_string was deleted successfully!
";
}
// 2. store array values
$demoOne = $cachePool->getItem('demo_array');
if (!$demoOne->isHit())
{
$demoOne->set(array("one", "two", "three"));
$cachePool->save($demoOne);
}
if ($cachePool->hasItem('demo_array'))
{
$demoOne = $cachePool->getItem('demo_array');
var_dump($demoOne->get());
echo "
";
}
// delete specific item
$cachePool->deleteItem('demo_array');
if (!$cachePool->hasItem('demo_array'))
{
echo "The cache entry demo_array was deleted successfully!
";
}
// 3. set expiry on items
$foo = $cachePool->getItem('foo');
if (!$foo->isHit())
{
$foo->set('bar');
$foo->expiresAfter(30);
$cachePool->save($foo);
}
if ($cachePool->hasItem('foo'))
{
$foo = $cachePool->getItem('foo');
echo $foo->get();
echo "
";
}
sleep(60);
if ($cachePool->hasItem('foo'))
{
$foo = $cachePool->getItem('foo');
echo $foo->get();
echo "
";
}
else
{
echo "Cache item was expired!
";
}
indexを参照しましょう.phpファイルの主な部分は、それらの用途を理解します.
キャッシュプールの作成
前述したように、キャッシュされたアイテムはキャッシュプールに格納されます.また、各キャッシュプールは、特定のキャッシュバックエンドとアダプタによってサポートされています.たとえば、プロジェクトをファイルシステムキャッシュに格納する場合は、ファイルシステムアダプタのキャッシュプールを初期化する必要があります.
$cachePool = new FilesystemAdapter('', 0, "cache");
FilesystemAdapter
オブジェクトには、次の3つのオプションパラメータがあります.文字列値の格納方法
キャッシュ・プールを作成したため、バッファ・エントリを格納するために使用できます.
まず,
getItem
法を用いてdemo_string
キーを介してバッファリングエントリを取得した.次に、isHit
メソッドを使用して、検索する値がキャッシュ・アイテム$demoString
に存在するかどうかを確認します.$demoString = $cachePool->getItem('demo_string');
if (!$demoString->isHit())
{
$demoString->set('Hello World!');
$cachePool->save($demoString);
}
demo_string
キャッシュ・アイテムを取得するのは初めてなので、isHit
メソッドはfalse
を返します.次に、$demoString
オブジェクトのset
メソッドを使用してキャッシュ値を設定します.最後に、save
メソッドを使用して、$demoString
キャッシュ・アイテムを$cachePool
キャッシュ・プールに保存します.プロジェクトをキャッシュに格納しました.キャッシュから取得する方法を見てみましょう.
if ($cachePool->hasItem('demo_string'))
{
$demoString = $cachePool->getItem('demo_string');
echo $demoString->get();
echo "
";
}
ここでは、
hasItem
メソッドを使用して、キャッシュ・プール内のキャッシュ・アイテムを取得する前にチェックします.次に、キャッシュ・プールからすべてのキャッシュ・アイテムを削除する方法を見てみましょう.
$cachePool->clear();
配列値の格納方法
前節では、キャッシュ・プールに基本値を格納する方法について説明しました.次の例に示すように、格納配列の値はほぼ同じです.
$demoOne = $cachePool->getItem('demo_array');
if (!$demoOne->isHit())
{
$demoOne->set(array("one", "two", "three"));
$cachePool->save($demoOne);
}
if ($cachePool->hasItem('demo_array'))
{
$demoOne = $cachePool->getItem('demo_array');
var_dump($demoOne->get());
echo "
";
}
ご覧のように、文字列のようにキャッシュ・アイテムを配列値に簡単に設定できます.
次に、キャッシュ・プールから特定のキャッシュ・アイテムを削除する方法を見てみましょう.
$cachePool->deleteItem('demo_array');
ここでは、
deleteItem
メソッドを使用して、demo_array
アイテムをキャッシュプールから削除します.キャッシュ・アイテムの有効期限の設定方法
これまで、プロジェクトはプールにキャッシュされており、満期日はありません.ただし、通常、プロジェクトをキャッシュに永続的に保存することは望ましくありません.たとえば、キャッシュ・アイテムを定期的にリフレッシュする場合は、期限切れのキャッシュ・アイテムを消去するメカニズムが必要です.
このセクションでは、キャッシュにアイテムと有効期限を格納する方法について説明します.
$foo = $cachePool->getItem('foo');
if (!$foo->isHit())
{
$foo->set('bar');
$foo->expiresAfter(30);
$cachePool->save($foo);
}
上記のコード・セグメントで説明したように、
expiresAfter
メソッドを使用してキャッシュ・アイテムの有効期限を設定できます.expiresAfter
メソッドの最初のパラメータに、キャッシュするアイテムのexpiresAfter
を渡すことができます.我々の例では、
sleep
メソッドを使用して、キャッシュプール内のキャッシュされたアイテムが依然として使用可能であるかどうかをテストします.if ($cachePool->hasItem('foo'))
{
$foo = $cachePool->getItem('foo');
echo $foo->get();
echo "
";
}
sleep(60);
if ($cachePool->hasItem('foo'))
{
$foo = $cachePool->getItem('foo');
echo $foo->get();
echo "
";
}
else
{
echo "Cache item was expired!
";
}
テストを続け、どのように動作するかを確認します.
結論
ここでは、PHPアプリケーションでキャッシュを設定できるSymfonyキャッシュコンポーネントについて簡単に説明します.また、使用するバックエンドタイプを柔軟に選択できるキャッシュアダプタもサポートされています.
以下の表を使って、あなたの考えや疑問を自由に表現してください.
翻訳:https://code.tutsplus.com/tutorials/set-up-caching-in-php-with-the-symfony-cache-component--cms-31498