ホームページ  >  記事  >  バックエンド開発  >  PHP キャッシュ クラスと呼び出し例

PHP キャッシュ クラスと呼び出し例

WBOY
WBOYオリジナル
2016-07-25 08:59:201109ブラウズ
  1. class Cache {
  2. /**
  3. * $dir: キャッシュ ファイルの保存ディレクトリ
  4. * $lifetime: キャッシュ ファイルの有効期間、秒単位
  5. * $cacheid: キャッシュ ファイルのパス、ファイル名を含む
  6. * $ext: キャッシュ ファイルの拡張子 (オプション)、ここで使用されるのは、ファイル閲覧の利便性
  7. */
  8. private $dir;
  9. プライベート$生涯;
  10. プライベート $cacheid;
  11. プライベート $ext;
  12. /**
  13. * デストラクター、キャッシュディレクトリが有効かどうかを確認、デフォルトの割り当て
  14. */
  15. function __construct($dir='',$lifetime=1800) {
  16. if ($this->dir_isvalid($dir)) {
  17. $this->dir = $dir ;
  18. $this->lifetime = $lifetime;
  19. $this->ext = '.Php';
  20. $this->cacheid = $this->getcacheid();
  21. }
  22. }
  23. /**
  24. * キャッシュが有効かどうかを確認します
  25. * bbs.it-home.org を編集します
  26. */
  27. プライベート関数 isvalid() {
  28. if (!file_exists($this->cacheid)) は false を返します。
  29. if (!(@$mtime = filemtime($this->cacheid))) は false を返します。
  30. if (mktime() - $mtime > $this->lifetime) は false を返します。
  31. true を返します。
  32. }
  33. /**
  34. * キャッシュに書き込みます
  35. * $mode == 0、ブラウザのキャッシュを通じてページ コンテンツを取得します
  36. * $mode == 1、直接割り当てを通じてページ コンテンツを取得します ($content パラメータを通じて受信します)
  37. * $mode = = 2、ローカルで読み込んでページコンテンツを取得(fopen ile_get_contents) (このメソッドは不要なようです)
  38. */
  39. public function write($mode=0,$content='') {
  40. switch ($mode) {
  41. case 0:
  42. $content = ob_get_contents();
  43. 休憩;
  44. デフォルト:
  45. ブレーク;
  46. }
  47. ob_end_flush();
  48. {
  49. file_put_contents($this->cacheid,$content); を試してください。
  50. }
  51. catch (Exception $e) {
  52. $this->error('写入缓存失败!请检查目录权限!');
  53. }
  54. }
  55. /**
  56. * キャッシュをロードします
  57. * exit() キャッシュをロードした後、元のページプログラムの実行を終了し、キャッシュが無効な場合は、元のページプログラムを実行してキャッシュを生成します
  58. * ob_start() ブラウザのキャッシュを有効にして取得します。ページの最後にページコンテンツ
  59. */
  60. public functionload() {
  61. if ($this->isvalid()) {
  62. echo "Thisはキャッシュです。
  63. //以下双种方式、哪种方式好?????
  64. require_once($this->cacheid);
  65. //echo file_get_contents($this->cacheid);
  66. exit();
  67. }
  68. else {
  69. ob_start();
  70. }
  71. }
  72. /**
  73. * キャッシュをクリアします
  74. */
  75. public function clean() {
  76. try {
  77. unlink($this->cacheid);
  78. }
  79. catch (Exception $e) {
  80. $this->error('清除缓存文件失败!请检查目录权限!');
  81. }
  82. }
  83. /**
  84. * キャッシュファイルのパスを取得します
  85. */
  86. プライベート関数 getcacheid() {
  87. return $this->dir.md5($this->geturl()).$this->ext;
  88. }
  89. /**
  90. * ディレクトリが存在するか、または作成できるかを確認します
  91. */
  92. プライベート関数 dir_isvalid($dir) {
  93. if (is_dir($dir)) は true を返します。
  94. {
  95. mkdir($dir,0777); を試してください。
  96. }
  97. catch (Exception $e) {
  98. $this->error('所设定缓存目录不存在并および创建失败!请检查目录权限!');
  99. false を返します。
  100. }
  101. true を返します。
  102. }
  103. /**
  104. * 現在のページの完全な URL を取得します
  105. */
  106. プライベート関数 geturl() {
  107. $url = '';
  108. if (isset($_SERVER['REQUEST_URI'])) {
  109. $url = $_SERVER['REQUEST_URI'];
  110. }
  111. else {
  112. $url = $_SERVER['Php_SELF'];
  113. $url .= empty($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING'];
  114. }
  115. $url を返します。
  116. }
  117. /**
  118. * エラーメッセージを出力します
  119. */
  120. private function error($str) {
  121. echo '
    '.$str.'
    ';
  122. }
  123. }
  124. ?>
复制代

2.phpキャッシュクラスのデモコード

  1. /*

  2. * 自由に複製して使用できます。著作権情報は保持してください。ご利用いただきありがとうございます
  3. * クラス名: Cache (Php5 用)
  4. *バージョン: 1.0
  5. * 説明: ページの自動生成、キャッシュの呼び出し、キャッシュの更新、キャッシュの削除を制御するために使用される動的キャッシュ クラス
  6. * 注:
  7. 1. このバージョンは Php5 バージョンです
  8. 2. このバージョンは utf- 8 エンコーディング (Web サイトで他のエンコーディングが使用されている場合) Windows システムの場合は、メモ帳を使用して開いて保存し、対応するエンコーディング (通常は ANSI) を選択してください。 Linux の場合は、対応する編集ソフトウェアまたは iconv コマンド ラインを使用してください。
  9. 3. コピーして貼り付ける場合は、上記の項目 2 を無視してください。
  10. * キャッシュに関するいくつかの考え:
  11. * 動的キャッシュと静的キャッシュの基本的な違いは、ユーザーがページにアクセスするプロセスであるということです。
  12. * 静的キャッシュ 関連する操作は通常、Web サイトのバックグラウンドで完了し、手動操作 (つまり手動生成) を必要とします。
  13. */
  14. /*
  15. * 使用例
  16. ----------Demo1 --------
  17. require_once('cache.inc.php');
  18. $cachedir = '. /Cache/'; //キャッシュディレクトリを設定します
  19. $cache = new Cache($cachedir,10); //パラメータを省略し、デフォルト設定を使用します $cache = new Cache($_GETir); ['cacheact'] != 'rewrite') //ここに xx.Php?cacheact =rewrite を使用してキャッシュを更新します
  20. $cache->load() //キャッシュが有効な場合はロードします。 、次のページ コードは実行されません
  21. //ページ コードの開始
  22. echo date('H:i:s jS F')
  23. / /ページ コードの終わり
  24. $cache->write();最初の実行またはキャッシュの有効期限、キャッシュの生成

  25. --------Demo2------ -

  26. require_once('cache.inc.php');
  27. $cachedir = './Cache/'; // キャッシュ ディレクトリを設定します
  28. $cache = new Cache($cachedir,10) // パラメータを省略し、デフォルトの Provincial 設定を使用します。 $cache = new Cache($cachedir); ($_GET['cacheact'] != 'rewrite') //ここにトリックがあります。xx.Php?cacheact=rewrite
  29. を介してキャッシュを更新します。 $cache ->load(); //キャッシュをロードします。キャッシュが有効な場合、次のページ コードは実行されません
  30. //ページ コードの開始
  31. $content = date('H:i:s jS F');
  32. echo $content
  33. / / ページ コードの終了
  34. $ queue->write(1,$content); //最初の実行またはキャッシュの有効期限、キャッシュの生成

  35. ------------- デモ 3----

  36. require_once('cache.inc.php');
  37. define('CACHEENABLE',true);
  38. if (CACHEENABLE) {
  39. $cachedir = './Cache/' // キャッシュディレクトリを設定します
  40. $cache = 新しいキャッシュ($cachedir,10); //デフォルト設定を採用するためにパラメータを省略します。 $cache = new Cache($cachedir)
  41. if ($_GET['cacheact'] != 'rewrite') //これがトリックです。 、xx.Php?cacheact=rewrite を通じてキャッシュを更新します
  42. $cache->load(); //キャッシュをロードします。キャッシュが有効な場合、次のページ コードは実行されません
  43. }
  44. //ページ コードstarting
  45. $content = date('H:i:s jS F');
  46. echo $content;
  47. //ページの終わり
  48. if (CACHEENABLE)
  49. $cache->write(1,$content); /初回実行 またはキャッシュの有効期限が切れたら、キャッシュを生成します
  50. */
  51. ?>

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