>  기사  >  백엔드 개발  >  PHP 데이터 파일 캐시 클래스 코드 예

PHP 데이터 파일 캐시 클래스 코드 예

WBOY
WBOY원래의
2016-07-25 08:52:151102검색
public static function error($line,$msg) {
  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) ? ($key, ''') . ''' : $key;
  30. $val = !is_array($val) && (!preg_match('/^-?[1-9]d*$/', $ val) || strlen($val) > 12) ? addcslashes($val, ''') . ''' : $val
  31. $evaluate .= "$comma$key => " . arrayEval($val, '', $level 1)
  32. }
  33. else
  34. {
  35. $evaluate .= " $comma$key => $val";
  36. }
  37. $comma = ",n$space2";
  38. }
  39. }
  40. $evaluate .= "n$space)";
  41. // 最后才需要一个“;”
  42. if ($level == 0)
  43. {
  44. $evaluate .= ";" }
  45. return $ 평가;
  46. }
  47. /**
  48. * 쓰기 캐시
  49. *
  50. * @param string $path
  51. * @param string $arrayName
  52. * @param array $data
  53. *
  54. * @return boolean
  55. */
  56. 공개 정적 함수 writeCache($path, $arrayName, $data)
  57. {
  58. if ($handle = fopen ($path, 'w'))
  59. {
  60. $data = self::arrayEval($data, $arrayName);
  61. $dataConvert = "
  62. 무리($handle, LOCK_EX);
  63. $rs = fputs($handle, $dataConvert);
  64. 무리($handle, LOCK_UN);
  65. fclose($handle);
  66. if ($rs !== false)
  67. {
  68. return true;
  69. }
  70. }
  71. false를 반환합니다.
  72. }
  73. }
  74. ?>
复代码
调사용 방법:

    /**
  1. * 파일 캐시 생성
  2. *
  3. * @param string $filePath 캐시 파일 저장 경로
  4. * @param string $arrayName 캐시 파일에 저장된 배열 이름
  5. * @param 배열 $ 데이터 데이터
  6. *
  7. * @return 부울
  8. */
  9. DataCache::writeCache($filePath, $arrayName, $data);
제조대码

memcache來快取資料,這個檔案快取的類別:

  1. /**
  2. * 檔案快取類別
  3. * 提供檔案快取
  4. */
  5. class Cache_FileCache{
  6. /**
  7. * 設定快取
  8. * @param $key 快取的關鍵字key
  9. * @param $data 快取的內容
  10. * @param $cacheLife 快取時間(單位為秒)如果為0 則表示無限時間
  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_CA. $key .".php";
  18. $cache = array();
  19. $time = __SYS_TIME;
  20. $cache['content'] = $data;
  21. $cache['expire'] = $cacheLife === 0 ? 0 : $time $cacheLife;
  22. $cache['mtime'] = $time;
  23. $cache = serialize($cache);
  24. $setReslut = @file_put_contents( $file,$cache) or self::error(__line__,"檔案寫入出錯");
  25. $chmodReslut = @chmod($file,0777) or self::error(__line__,"設定檔案權限失敗");
  26. if($setReslut && $chmodReslut)
  27. {
  28. return true;
  29. }
  30. else
  31. {
  32. return false }
  33. }
  34. }
  35. }
  36. /**
  37. * 取得快取資料
  38. * @param $key 快取的關鍵字key
  39. * @return array
  40. */
  41. public static function getCache($key)
  42. {
  43. @$file = __SITE_FILE_CACHE . "/" . $key ." .php";
  44. if(file_exists($file))
  45. {
  46. $data = @file_get_contents($file);
  47. $data = unserialize($data);
  48. if($ data['expire']==0 || $data['expire'] > __SYS_TIME)
  49. {
  50. return $data['content'];
  51. }
  52. else
  53. {
  54. unlink($file);
  55. return array();
  56. }
  57. }
  58. }
  59. /**
  60. * 刪除快取檔案
  61. * @param $key 快取$key
  62. * @return Bool
  63. */
  64. public static function delCache( $key)
  65. {
  66. if (@unlink(__SITE_FILE_CACHE."/".$key.".php"))
  67. {
  68. return true;
  69. }
  70. else
  71. return true;
  72. }
  73. else
  74. return true;
  75. }
  76. else
  77. return true;
  78. }
  79. else
  80. {
  81. return false;
  82. }
  83. }
  84. /**
  85. * 清除所有快取檔案
  86. * @return Bool
  87. */
  88. public static function clearAllCache()
  89. public static function clearAllCache()
  90. {
  91. files = scandir(__SITE_FILE_CACHE);
  92. foreach ($files as $val)
  93. {
  94. @unlink(__SITE_FILE_CACHE."/".$val);
  95. }
  96. }
🎜> /**
* 出錯處理函數 * @param $line 行數 * @param $msg 資訊
*/
die("出錯檔案:".__file__."/n出錯行:$line/ n錯誤訊息:$msg"); }
}
?>

複製程式碼
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.