Web 開発では、ファイル キャッシュを使用してデータベースへの負担を大幅に軽減できます。 次のコードは、php でのファイル キャッシュの使用例です。
CacheLayer.php
- class CacheLayer{
- protected $root = "";
- protected $cache = "";
- protected $key = "";
- protected $life = 0;
- public function __construct($key, $root = "/cachelayer"){
- $this->root = $_SERVER["DOCUMENT_ROOT"].$root;
- $this->key = $key;
- }
- public functionexpired($life_span){
- $this->life = $life_span;
- $file = $this->root."/".$this->key.".cachelayer";
- if(is_file ($file)){
- $mtime = filemtime($file);
- return (time() >= ($mtime + $this->life));
- }else{
- return true;
- }
- }
- public function put($content){
- $file = $this->root."/".$this->key.".cachelayer";
- if(!is_dir(dirname($this->root) ))){
- return false;
- }
- $this->delete();
- $content = json_encode($content);
- return (bool)file_put_contents($file, $content);
- }
- public function get (){
- $file = $this->root."/".$this->key.".cachelayer";
- if(is_file($file)){
- return json_decode(file_get_contents($file), true);
- }
- return array();
- }
- public function delete(){
- $file = $this->root."/".$this->key.".cachelayer";
- if( is_file($file)){
- unlink($file);
- return true;
- }
- return false;
- }
- }
コードをコピー
example.php
- // キャッシュレイヤーとデータベース接続をロードします(データベース接続はオプションです)
- require_once "CacheLayer.php";
- require_once "db_connection.php";
- / / キャッシュレイヤーのインスタンスを作成します
- $cl_nav = new CacheLayer("navigation");
- // キャッシュの有効期限が切れているかどうかを確認します (60 * 10 = 10 分)
- if($cl_nav->expired(60 * 10)){
- echo "キャッシュが存在しないか、期限切れです。再構築中...
"; - // キャッシュが期限切れの場合は再構築します
- $result = mysql_query("select id, title from Navigation");
- $new_cache = array();
- while($row = mysql_fetch_assoc($result)){
- $new_cache[] = $row;
- }
- // 配列をキャッシュに保存します
- $cl_nav-> ;put($new_cache);
- }
- echo "キャッシュから読み込み中...
";
- // キャッシュを取得します
- $cache = $cl_nav->get();
-
- // 表示キャッシュ
- foreach($cache as $row){
- $id = $row["id"];
- $title = $row["title"];
- echo "$title
";
- }
コードをコピー
|