이 기사의 예에는 일반적인 PHP 데이터 파일 캐시 클래스가 요약되어 있습니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
우리는 데이터를 캐시하기 위해 일반적으로 PHP 파일 캐싱과 Memcache를 사용합니다. 아래에서는 Memcache 데이터 캐싱과 데이터 파일 캐싱을 각각 요약합니다. 관심있는 친구들은 그것을 참고할 수 있습니다.
1. 일반 변수는 PHP 언어 형식으로 변경하여 파일에 작성하면 됩니다.
2. 배열형 변수의 경우 배열을 PHP 언어로 정의하는 문자열로 변환하여 파일에 씁니다. 이를 포함하는 데만 시간이 걸리며 이는 캐시를 로드하는 것과 같습니다.
3. 캐시 파일 생성 시간을 가져와 현재 시간과 비교하여 캐시 시간을 제어합니다. 업데이트 시간이면 캐시를 직접 읽어보세요.
파일 캐시 클래스, 코드는 다음과 같습니다.
클래스 DataCache
{
/**
* 배열 변환
*
* @param 배열 $array
* @param 문자열 $arrayName
* @param 배열 $level
*
* @return 문자열
*/
개인 함수 arrayEval($array, $arrayName = '', $level = 0)
{
$space = str_repeat("t", $level)
if (비어 있음($arrayName))
{
$evaluate = "arrayn$space(n";
}
그렇지 않으면
{
$evaluate = "${$arrayName} = arrayn$space(n";
}
$space2 = str_repeat("t", $level 1)
$쉼표 = $space2
if (!emptyempty($array))
{
foreach($array를 $key => $val)
{
$key = is_string($key) ? ''' . addcslashes($key, ''') ''' : $key;
$val = !is_array($val) && (!preg_match('/^-?[1-9]d*$/', $val) || strlen($val) > 12) ? addcslashes ($val, ''') . ''' : $val
If (is_array($val))
{
$evaluate .= "$comma$key => " . arrayEval($val, '', $level 1);
}
그렇지 않으면
{
$evaluate .= "$comma$key => $val"
}
$comma = ",n$space2"
}
}
$평가 .= "n$space)"
// 끝에 ";" 하나만 필요합니다
if ($level == 0)
{
$평가 .= ";"
}
$평가 반환
}
/**
* 쓰기 캐시
*
* @param 문자열 $path
* @param 문자열 $arrayName
* @param 배열 $data
*
* @return 부울
*/
공개 정적 함수 writeCache($path, $arrayName, $data)
{
if ($handle = fopen($path, 'w '))
{
$data = self::arrayEval($data, $arrayName)
$dataConvert = "
무리($handle, LOCK_EX)
$rs = fputs($handle, $dataConvert)
무리($handle, LOCK_UN)
fclose($핸들)
if ($rs !== false)
{
true를 반환합니다.
}
}
거짓을 반환
}
}
?>
메소드를 호출하기 위한 코드는 다음과 같습니다.
* 파일 캐시 생성
*
* @param string $filePath 캐시 파일 저장 경로
* @param string $arrayName 캐시 파일
에 저장된 배열 이름
* @param 배열 $data 데이터
*
* @return 부울
*/
DataCache::writeCache($filePath, $arrayName, $data);
memcache는 데이터를 캐시하는 데 사용됩니다. 코드는 다음과 같습니다.
코드 복사 코드는 다음과 같습니다.
/**
* 파일 캐시 클래스
* 파일 캐싱 제공
*/
클래스 Cache_FileCache{
/**
* 캐시 설정
* @param $key 캐시된 키워드 키
* @param $data 캐시된 콘텐츠
* @param $cacheLife 캐시 시간(초) 0이면 무제한 시간을 의미합니다
* @return 부울
*/
공개 정적 함수 setCache($key,$data,$cacheLife)
{
if(file_exists(__SITE_FILE_CACHE))
{
@$file = __SITE_FILE_CACHE . "/" . $키 .".php";
$캐시 = 배열();
$시간 = __SYS_TIME;
$cache['content'] = $data;
$cache['expire'] = $cacheLife === 0 ? 0 : $time $cacheLife;
$cache['mtime'] = $time;
$cache = 직렬화($cache);
$setReslut = @file_put_contents($file,$cache) 또는 self::error(__line__,"文件写入 Out错");
$chmodReslut = @chmod($file,0777) 또는 self::error(__line__,"设定文件权限失败");
if($setReslut && $chmodReslut)
{
사실을 반환;
}
그렇지 않으면
{
거짓을 반환;
}
}
}
/**
* 캐시된 데이터 가져오기
* @param $key 캐시된 키워드 키
* @return 배열
*/
공개 정적 함수 getCache($key)
{
@$file = __SITE_FILE_CACHE . "/" . $키 .".php";
if(파일_존재($file))
{
$data = @file_get_contents($file);
$data = unserialize($data);
if($data['expire']==0 || $data['expire'] > __SYS_TIME)
{
$data['콘텐츠']를 반환;
}
그렇지 않으면
{
링크해제($file);
반환 배열();
}
}
}
/**
* 캐시 파일 삭제
* @param $key 캐시 $key
* @return 부울
*/
공개 정적 함수 delCache($key)
{
if (@unlink(__SITE_FILE_CACHE."/".$key.".php"))
{
사실을 반환;
}
그렇지 않으면
{
거짓을 반환;
}
}
/**
* 모든 캐시 파일 지우기
* @return 부울
*/
공개 정적 함수clearAllCache()
{
$files = scandir(__SITE_FILE_CACHE);
foreach($files를 $val로)
{
@unlink(__SITE_FILE_CACHE."/".$val);
}
}
/**
* 오류 처리 기능
* @param $line 줄 수
* @param $msg 메시지
*/
공개 정적 함수 오류($line,$msg)
{
die("출현문件:".__file__."/n출행:$line/n错误信息:$msg");
}
}
?>
希望本文所述对大家基于ThinkPHP는 PHP程序设计有所帮助입니다.