| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
phpde
10年前发布

php中使用文件缓存的例子

在web开发中,可以通过文件缓存,大大缓解数据库的压力。 如下代码是php中使用文件缓存的例子。

CacheLayer.php

<?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 function expired($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

<?php  // Load the cachelayer and the database connection (db connection is optional)  require_once "CacheLayer.php";  require_once "db_connection.php";    // Create a instance of the cachelayer  $cl_nav = new CacheLayer("navigation");  // Check to see if the cache is expired (60 * 10 = 10 minutes)  if($cl_nav->expired(60 * 10)){      echo "Cache doesn't exist or is expired. Rebuilding...<br />";      // if the cache is expired rebuild it      $result    = mysql_query("select id, title from navigation");      $new_cache = array();      while($row = mysql_fetch_assoc($result)){          $new_cache[] = $row;      }      // Save the array into the cache      $cl_nav->put($new_cache);  }  echo "Loading from cache...<br />";  // Get the cache  $cache = $cl_nav->get();    // Display the cache  foreach($cache as $row){      $id    = $row["id"];      $title = $row["title"];      echo "<a href='/$id/$title'>$title</a><br />";  }