ホームページ  >  記事  >  バックエンド開発  >  PHPでのファイルキャッシュの使用例

PHPでのファイルキャッシュの使用例

WBOY
WBOYオリジナル
2016-07-25 08:45:221254ブラウズ

Web 開発では、ファイル キャッシュを使用してデータベースへの負担を大幅に軽減できます。 次のコードは、php でのファイル キャッシュの使用例です。

CacheLayer.php

  1. class CacheLayer{
  2. protected $root = "";
  3. protected $cache = "";
  4. protected $key = "";
  5. protected $life = 0;
  6. public function __construct($key, $root = "/cachelayer"){
  7. $this->root = $_SERVER["DOCUMENT_ROOT"].$root;
  8. $this->key = $key;
  9. }
  10. public functionexpired($life_span){
  11. $this->life = $life_span;
  12. $file = $this->root."/".$this->key.".cachelayer";
  13. if(is_file ($file)){
  14. $mtime = filemtime($file);
  15. return (time() >= ($mtime + $this->life));
  16. }else{
  17. return true;
  18. }
  19. }
  20. public function put($content){
  21. $file = $this->root."/".$this->key.".cachelayer";
  22. if(!is_dir(dirname($this->root) ))){
  23. return false;
  24. }
  25. $this->delete();
  26. $content = json_encode($content);
  27. return (bool)file_put_contents($file, $content);
  28. }
  29. public function get (){
  30. $file = $this->root."/".$this->key.".cachelayer";
  31. if(is_file($file)){
  32. return json_decode(file_get_contents($file), true);
  33. }
  34. return array();
  35. }
  36. public function delete(){
  37. $file = $this->root."/".$this->key.".cachelayer";
  38. if( is_file($file)){
  39. unlink($file);
  40. return true;
  41. }
  42. return false;
  43. }
  44. }
コードをコピー

example.php

  1. // キャッシュレイヤーとデータベース接続をロードします(データベース接続はオプションです)
  2. require_once "CacheLayer.php";
  3. require_once "db_connection.php";
  4. / / キャッシュレイヤーのインスタンスを作成します
  5. $cl_nav = new CacheLayer("navigation");
  6. // キャッシュの有効期限が切れているかどうかを確認します (60 * 10 = 10 分)
  7. if($cl_nav->expired(60 * 10)){
  8. echo "キャッシュが存在しないか、期限切れです。再構築中...
    ";
  9. // キャッシュが期限切れの場合は再構築します
  10. $result = mysql_query("select id, title from Navigation");
  11. $new_cache = array();
  12. while($row = mysql_fetch_assoc($result)){
  13. $new_cache[] = $row;
  14. }
  15. // 配列をキャッシュに保存します
  16. $cl_nav-> ;put($new_cache);
  17. }
  18. echo "キャッシュから読み込み中...
    ";
  19. // キャッシュを取得します
  20. $cache = $cl_nav->get();
  21. // 表示キャッシュ
  22. foreach($cache as $row){
  23. $id = $row["id"];
  24. $title = $row["title"];
  25. echo "$title
    ";
  26. }
コードをコピー

php


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