ホームページ >バックエンド開発 >PHPチュートリアル >PHP データ キャッシュの永続ストレージと回復戦略の分析

PHP データ キャッシュの永続ストレージと回復戦略の分析

王林
王林オリジナル
2023-08-10 23:46:501659ブラウズ

PHP データ キャッシュの永続ストレージと回復戦略の分析

PHP データ キャッシュの永続ストレージと回復戦略の分析

PHP アプリケーション開発において、データ キャッシュはアプリケーションのパフォーマンスと応答性を大幅に向上させる重要な最適化方法です。ただし、場合によっては、アプリケーションの再起動またはサーバーの再起動後にデータを復元できるように、キャッシュされたデータを永続的に保存する必要があります。この記事では、PHP データ キャッシュの永続ストレージと回復戦略をいくつか紹介し、対応するコード例を示します。

1. ファイル ストレージ

ファイル ストレージは、シンプルで一般的に使用される永続ストレージ方法であり、キャッシュ データをファイルの形式でサーバーのディスクに保存します。以下は、ファイル ストレージを使用するサンプル コードです。

function cache_get($key) {
    $cache_dir = '/path/to/cache/dir/';
    $file = $cache_dir . md5($key);
    
    if (file_exists($file)) {
        $data = file_get_contents($file);
        $cache = unserialize($data);
        if ($cache['expire'] < time()) {
            unlink($file);
            return false;
        }
        return $cache['data'];
    }
    return false;
}

function cache_set($key, $data, $expire = 3600) {
    $cache_dir = '/path/to/cache/dir/';
    $file = $cache_dir . md5($key);
    $cache = [
        'expire' => time() + $expire,
        'data' => $data
    ];
    $data = serialize($cache);
    file_put_contents($file, $data);
}

上記のコードでは、2 つの関数 cache_getcache_set を使用して、データの読み取りと書き込み操作を実現しています。 cache_getこの関数は、まず $key を MD5 暗号化してファイル名を生成し、次にファイルが存在するかどうかを確認し、存在する場合はファイルの内容を読み取り、キャッシュされたデータに逆シリアル化します。次に、キャッシュされたデータの有効期限が切れているかどうかを確認し、期限切れの場合はファイルを削除して false を返します。最後に、キャッシュされたデータが返されます。 cache_setこの関数は、まず $key を MD5 暗号化してファイル名を生成し、次にキャッシュ データと有効期限を連想配列として保存し、ファイルに書き込む前に配列を文字列にシリアル化します。最後に、file_put_contents 関数を使用して文字列をファイルに書き込みます。

2. データベース ストレージ

データベース ストレージは、一般的に使用されるもう 1 つの永続ストレージ方法であり、キャッシュされたデータをデータベース テーブルに保存します。以下は、データベース ストレージを使用するサンプル コードです。

function cache_get($key) {
    $db_host = 'localhost';
    $db_user = 'root';
    $db_password = 'password';
    $db_name = 'cache_db';
    
    $conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
    if (!$conn) {
        die('Database connection failed: ' . mysqli_connect_error());
    }
    
    $sql = "SELECT data FROM cache_table WHERE `key` = '$key' AND expire >= NOW()";
    $result = mysqli_query($conn, $sql);
    
    if (mysqli_num_rows($result) > 0) {
        $row = mysqli_fetch_assoc($result);
        return $row['data'];
    }
    
    return false;
}

function cache_set($key, $data, $expire = 3600) {
    $db_host = 'localhost';
    $db_user = 'root';
    $db_password = 'password';
    $db_name = 'cache_db';
    
    $conn = mysqli_connect($db_host, $db_user, $db_password, $db_name);
    if (!$conn) {
        die('Database connection failed: ' . mysqli_connect_error());
    }
    
    $expire_date = date('Y-m-d H:i:s', time() + $expire);
    $data = mysqli_real_escape_string($conn, $data);
    
    $sql = "INSERT INTO cache_table (`key`, data, expire) VALUES ('$key', '$data', '$expire_date')";
    mysqli_query($conn, $sql);
}

上記のコードでは、2 つの関数 cache_getcache_set を使用して、データの読み取りおよび書き込み操作を実現します。 cache_getこの関数は、まずデータベースとの接続を確立し、次に SQL ステートメントを通じて、対応するキャッシュ データがデータ テーブルに存在するかどうかをクエリします。クエリ結果にデータが存在する場合は、データ フィールドの値が返されます。 cache_set 関数は、まずデータベースへの接続を確立し、次に現在のタイムスタンプと有効期限の日付を取得し、mysqli_real_escape_string 関数を通じてデータをエスケープし、最後に SQL ステートメントを実行します。データをデータベーステーブルに挿入します。

3. メモリ ストレージ

メモリ ストレージは、効率的な永続ストレージ方法です。キャッシュされたデータをメモリに保存します。アプリケーションやサーバーが再起動された後でも、データはまだ回復できます。 。以下はメモリ ストレージを使用するサンプル コードです。

function cache_get($key) {
    $cacheObj = new Memcached();
    $cacheObj->addServer('localhost', 11211);
    
    $data = $cacheObj->get($key);
    return $data;
}

function cache_set($key, $data, $expire = 3600) {
    $cacheObj = new Memcached();
    $cacheObj->addServer('localhost', 11211);
    
    $cacheObj->set($key, $data, $expire);
}

上記のコードでは、2 つの関数 cache_getcache_set を使用してデータの読み取りと書き込み操作を実現しています。 cache_get 関数は、まず Memcached オブジェクトを作成し、addServer メソッドを通じて Memcached サーバーのアドレスとポートを追加します。次に、get メソッドを使用してメモリからキャッシュ データを取得し、データを返します。 cache_set 関数は、まず Memcached オブジェクトを作成し、addServer メソッドを通じて Memcached サーバーのアドレスとポートを追加します。次に、set メソッドを使用してデータをメモリに保存します。

結論

この記事では、ファイル ストレージ、データベース ストレージ、メモリ ストレージなどの PHP データ キャッシュの永続ストレージと回復戦略を紹介します。適切なストレージ方法を選択することで、実際のニーズに基づいてアプリケーションのパフォーマンスと応答性を向上させることができます。この記事が、PHP アプリケーション開発でデータ キャッシュを使用する際の読者の助けになれば幸いです。

以上がPHP データ キャッシュの永続ストレージと回復戦略の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。