ホームページ  >  記事  >  バックエンド開発  >  PHPデータファイルキャッシュクラスのコード例

PHPデータファイルキャッシュクラスのコード例

WBOY
WBOYオリジナル
2016-07-25 08:52:151058ブラウズ
  1. class DataCache
  2. {
  3. /**
  4. * 配列変換
  5. *
  6. * @param array $array
  7. * @param string $arrayName
  8. * @param array $level
  9. *
  10. * @return string
  11. */
  12. プライベート関数 arrayEval($array, $arrayName = '', $level = 0)
  13. {
  14. $space = str_repeat( "t", $level);
  15. if (emptyempty($arrayName))
  16. {
  17. $evaluate = "arrayn$space(n";
  18. }
  19. else
  20. {
  21. $evaluate = "${$arrayName} = arrayn$space(n";
  22. }
  23. $space2 = str_repeat("t", $level + 1);
  24. $comma = $space2;
  25. if (!emptyempty($array))
  26. {
  27. foreach ($array as $key => $val)
  28. {
  29. $key = is_string($key) '' . addcslashes($key, '') . '' : $key; ^-?[1-9]d*$/', $val) || strlen($val) > '' . addcslashes($val, ''') : $val;
  30. if (is_array($val))
  31. {
  32. $evaluate .= "$comma$key => " . arrayEval($val, '', $level + 1)
  33. }
  34. else
  35. {
  36. $evaluate . = "$comma$key => $val";
  37. }
  38. $comma = ",n$space2";
  39. }
  40. }
  41. $evaluate .= "n$space)" // 最後に必要な“;”
  42. if ($level == 0)
  43. {
  44. $evaluate .= ";"; }
  45. return $evaluate; }
  46. /**
  47. * ライトキャッシュ
  48. *
  49. * @param string $path
  50. * @param string $arrayName
  51. * @param array $data
  52. *
  53. * @return boolean
  54. */
  55. public static function writeCache($path , $arrayName, $data)
  56. {
  57. if ($handle = fopen($path, 'w+'))
  58. {
  59. $data = self::arrayEval($data, $arrayName);
  60. $dataConvert = "
  61. flock($handle, LOCK_EX);
  62. $rs = fputs($handle, $dataConvert);
  63. flock($handle, LOCK_UN);
  64. fclose($handle);
  65. if ($rs !== false)
  66. {
  67. true を返します。
  68. }
  69. }
  70. false を返します。
  71. }
  72. }
  73. ?>
  74. 复制代
调用方法:

/**
* ファイルキャッシュを生成する
*
    * @param string $filePath キャッシュファイルの保存パス
  1. * @param string $arrayName キャッシュファイルに格納される配列名
  2. * @param array $data データ
  3. *
  4. * @return boolean
  5. */
  6. DataCache::writeCache($filePath, $arrayName, $data);
  7. 复制代码
  8. memcache は、このファイル キャッシュのクラスをキャッシュするために使用されます。

    1. /**
    2. * ファイル キャッシュ クラス
    3. * ファイル キャッシュを提供します
    4. */
    5. class Cache_FileCache{
    6. /**
    7. * キャッシュを設定します
    8. * @param $key キャッシュされたキーワードキー
    9. * @param $data キャッシュされたコンテンツ
    10. * @param $cacheLife キャッシュ時間 (単位: 秒) は、無制限を意味します
    11. * @return Bool
    12. */
    13. public static function setCache($key,$data,$cacheLife)
    14. {
    15. if(file_exists(__SITE_FILE_CACHE))
    16. {
    17. @$file = __SITE_FILE_CACHE . $key .".php"
    18. $time = __SYS_TIME; ] = $data;
    19. $cache['expire'] = $cacheLife === 0 : $time+$cacheLife;
    20. $cache = $time;
    21. $setReslut = @file_put_contents($file,$cache) または self::error(__line__,"ファイル書き込みエラー");
    22. $chmodReslut = @chmod($file,0777) または self::error(__line__," 失敗しましたファイルのアクセス許可を設定する");
    23. if($setReslut && $chmodReslut)
    24. {
    25. return true;
    26. }
    27. else
    28. {
    29. return false;
    30. }
    31. }
    32. }
    33. /**
    34. * キャッシュされたデータを取得します
    35. * @param $key キャッシュされたキーワードキー
    36. * @return array
    37. */
    38. public静的関数 getCache($key)
    39. {
    40. @$file = __SITE_FILE_CACHE . "/" . $key .".php";
    41. if(file_exists($file))
    42. {
    43. $data = @file_get_contents($file) ;
    44. $data = unserialize($data);
    45. if($data['expire']==0 || $data['expire'] > __SYS_TIME)
    46. {
    47. return $data['content'] }
    48. else
    49. {
    50. unlink($file);
    51. return array();
    52. }
    53. }
    54. }
    55. /**
    56. * キャッシュファイルを削除します
    57. * @param $key Cache $key
    58. * @return Bool
    59. */
    60. public static function delCache($key)
    61. {
    62. if ( __SITE_FILE_CACHE."/".$key.".php"))
    63. {
    64. return true;
    65. }
    66. else
    67. {
    68. return false;
    69. }
    70. /**
    71. * すべてのキャッシュ ファイルをクリアします
    72. * @return Bool
    73. */
    74. public static function clearAllCache()
    75. {
    76. $files = scandir(__SITE_FILE_CACHE);
    77. foreach ($files as $val)
    78. {
    79. @unlink(__SITE_FILE_CACHE."/".$val)
    80. }
    81. }
    82. /**
    83. * エラー処理関数
    84. * @param $line 行番号
    85. * @param $msg 情報
    86. */
    87. public static function error($line,$msg)
    88. {
    89. die("エラー ファイル: ".__file__."/nエラー行: $line/nエラー メッセージ: $msg");
    90. }
    91. }
    92. ? >
    93. コードをコピー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。