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_get
と cache_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_get
と cache_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_get
と cache_set
を使用してデータの読み取りと書き込み操作を実現しています。 cache_get
関数は、まず Memcached
オブジェクトを作成し、addServer
メソッドを通じて Memcached サーバーのアドレスとポートを追加します。次に、get
メソッドを使用してメモリからキャッシュ データを取得し、データを返します。 cache_set
関数は、まず Memcached
オブジェクトを作成し、addServer
メソッドを通じて Memcached サーバーのアドレスとポートを追加します。次に、set
メソッドを使用してデータをメモリに保存します。
結論
この記事では、ファイル ストレージ、データベース ストレージ、メモリ ストレージなどの PHP データ キャッシュの永続ストレージと回復戦略を紹介します。適切なストレージ方法を選択することで、実際のニーズに基づいてアプリケーションのパフォーマンスと応答性を向上させることができます。この記事が、PHP アプリケーション開発でデータ キャッシュを使用する際の読者の助けになれば幸いです。
以上がPHP データ キャッシュの永続ストレージと回復戦略の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。