Symfonyキャッシュコンポーネントを使用してPHPでキャッシュを設定する


今日は、PHPアプリケーションにキャッシュを追加する簡単な方法であるSymfonyキャッシュコンポーネントを示します.ページのロード時間を短縮することで、アプリケーション全体のパフォーマンスを向上させることができます.
Symfonyキャッシュコンポーネント
Symfonyキャッシュコンポーネントを使用すると、PHPアプリケーションでキャッシュを設定できます.このコンポーネント自体はインストールと構成が非常に容易で、迅速に導入できます.また、次の表に示すように、複数のアダプタを選択できます.
  • データベースアダプタ
  • ファイルシステムアダプタ
  • メモリキャッシュアダプタ
  • Redisアダプタ
  • APCuアダプタ
  • およびそれ以上の
  • Symfonyキャッシュコンポーネントを使用してキャッシュする場合は、いくつかの用語を熟知する必要があります.
    まず、キャッシュ・アイテムとは、格納されたコンテンツを指します.各アイテムはキー値ペアとして保存されます.キャッシュ・アイテムは、論理グループ化されたキャッシュ・プールによって管理されます.実際には、キャッシュプールを使用してキャッシュ値を操作する必要があります.最後に、キャッシュアダプタによってすべての煩雑な作業が完了し、プロジェクトをキャッシュバックエンドに格納します.
    本稿では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