> 백엔드 개발 > PHP 튜토리얼 > 2009nba 결승전 데이터 PHP 데이터 캐싱 기술

2009nba 결승전 데이터 PHP 데이터 캐싱 기술

WBOY
풀어 주다: 2016-07-29 08:36:21
원래의
1285명이 탐색했습니다.

데이터 캐싱은 웹 개발에서 일반적으로 사용되는 성능 최적화 방법입니다. 현재 파일 캐싱 또는 데이터베이스 캐싱에는 두 가지 주요 형태가 있습니다. 데이터베이스 캐싱은 불가능하지 않으며 실제로 매우 훌륭하고 중요합니다. 전통적인 데이터베이스는 주로 비즈니스 계층, 모듈 설계 등에서 고려되는 반면, 캐시 데이터베이스는 주로 구현 계층에서 주로 사용되는 다중 테이블 쿼리를 캐시하기 위해 설계된다고 생각합니다. 여기서 가장 중요한 것은 파일 캐싱입니다. 여기에는 몇 가지 기본 정보가 있습니다.
캐시는 '시간을 위한 공간' 전략의 대표적인 적용 모드로, 시스템 성능을 향상시키는 중요한 방법입니다. 캐시를 사용하면 액세스 볼륨이 큰 경우 데이터베이스 작업 수를 크게 줄이고 시스템 부하를 크게 줄이고 시스템 성능을 향상시킬 수 있습니다. 페이지 캐싱에 비해 결과 집합은 형식 정보가 포함되지 않은 일종의 "원시 데이터"이므로 데이터 양이 상대적으로 적고 다시 형식을 지정할 수 있으므로 매우 유연합니다. PHP는 "컴파일과 동시에 실행"하는 스크립팅 언어이기 때문에 결과 세트 캐싱을 어느 정도 사용하는 매우 편리한 방법을 제공합니다. 즉, 해당 데이터 정의 코드 세그먼트를 동적으로 포함하여 캐시를 사용합니다. "RamDisk"에 캐시를 구축하면 효율성이 더욱 향상됩니다. 다음은 참조용 작은 샘플 코드입니다.

<span><code><span><br><span><? <BR></SPAN><SPAN>// load data with cache <br></SPAN><SPAN>function </SPAN><SPAN>load_data</SPAN><SPAN>(</SPAN><SPAN>$id</SPAN><SPAN>,</SPAN><SPAN>$cache_lifetime</SPAN><SPAN>) { <br></SPAN><SPAN>// the return data <br></SPAN><SPAN>$data </SPAN><SPAN>= array(); <br></SPAN><SPAN>// make cache filename <br></SPAN><SPAN>$cache_filename </SPAN><SPAN>= </SPAN><SPAN>‘cache_‘</SPAN><SPAN>.</SPAN><SPAN>$id</SPAN><SPAN>.</SPAN><SPAN>‘</SPAN><SPAN>.</SPAN><SPAN>php‘</SPAN><SPAN>; <br></SPAN><SPAN>// check cache file‘s last modify time <br></SPAN><SPAN>$cache_filetime </SPAN><SPAN>= </SPAN><SPAN>filemtime</SPAN><SPAN>(</SPAN><SPAN>$cache_filename</SPAN><SPAN>); <br>if (</SPAN><SPAN>time</SPAN><SPAN>() - </SPAN><SPAN>$cache_filetime </SPAN><SPAN><= </SPAN><SPAN>$cache_lifetime</SPAN><SPAN>) { <br></SPAN><SPAN>//** the cache is not expire <br></SPAN><SPAN>include(</SPAN><SPAN>$cache_filename</SPAN><SPAN>); <br>} else { <br></SPAN><SPAN>//** the cache is expired <br>// load data from database <br>// ... <br></SPAN><SPAN>while (</SPAN><SPAN>$dbo</SPAN><SPAN>-></span><span>nextRecord</span><span>()) {  <br></span><span>// $data[] = ...  <br></span><span>}  <br></span><span>// format the data as a php file  <br></span><span>$data_cache </span><span>= </span><span>" <br>while (list($key, $val) = each($data)) {  <br>$data_cache .= "</span><span>$data</span><span>[</span><span>‘$key‘</span><span>]=array(</span><span>‘</span><span>";  <br>$data_cache .= "</span><span>‘NAME‘</span><span>=></span><span>""</span><span>.</span><span>qoute</span><span>(</span><span>$val</span><span>[</span><span>‘NAME‘</span><span>]).</span><span>"","  <br></span><span>$data_cache </span><span>.= </span><span>"‘VALUE‘=>""</span><span>.</span><span>qoute</span><span>(</span><span>$val</span><span>[</span><span>‘VALUE‘</span><span>]).</span><span>"""  <br></span><span>$data_cache </span><span>.= </span><span>";);rn"</span><span>;  <br>}  <br></span><span>$data_cache </span><span>= </span><span>"?>rn"</span><span>;  <br></span><span>// save the data to the cache file  <br></span><span>if (</span><span>$fd </span><span>= </span><span>fopen</span><span>(</span><span>$cache_filename</span><span>,</span><span>‘w</span><span> </span><span>‘</span><span>)) {  <br></span><span>fputs</span><span>(</span><span>$fd</span><span>,</span><span>$data_cache</span><span>);  <br></span><span>fclose</span><span>(</span><span>$fd</span><span>);  <br>}  <br>}  <br>return </span><span>$data</span><span>;  <br>}  <br></span><span>?></span>  <br></span>// 캐시로 데이터 로드
기능 로드_데이터($id,$cache_lifetime) { < br>// 반환 데이터
$data = array()
// 캐시 파일 이름
$cache_filename = 'cache_'.$id 만들기 .'.php'
// 캐시 파일의 마지막 수정 시간 확인
$cache_filetime = filemtime(< SPAN>$cache_filename
);
if (
시간() - $cache_filetime < SPAN><= $cache_lifetime) {
//** 캐시가 만료되지 않았습니다.
< SPAN>include($cache_filename);
} else {
//** 캐시가 만료되었습니다
/ / 데이터베이스에서 데이터 로드
// ...
while ($dbo-> nextRecord()) {
// $data[] = ...
}
// 데이터를 PHP 파일 형식으로 지정합니다.
$data_cache = "
while (list( $key , $val) = 각각($data)) {
$data_cache .= "
$data['$key' SPAN>]=array('";
$data_cache .= "
'NAME' =>"".qoute($val SPAN> ['이름'])."","
$data_cache .= "'VALUE'=>"".qoute( SPAN> $val['값'])."""
SPAN> $data_cache .= ";);rn"
}
$ data_cache = "?>rn";
// 데이터를 캐시 파일에 저장 if ($fd = fopen( $cache_filename,'w ')) {
SPAN>fputs($fd,$data_cache) fclose($fd)
}
}
반환
SPAN>$데이터;
}
?>

적용 가능한 상황:
1. 주로 읽기 작업의 경우 데이터가 비교적 안정적입니다.
2. 파일 작업은 데이터베이스 작업보다 빠릅니다.
3. 복잡한 데이터 액세스, 대용량 데이터 액세스, 집중적인 데이터 액세스, 시스템 데이터베이스 부하가 매우 큽니다.
4.웹/DB 분리 구조 또는 멀티 웹 단일 DB 구조.
확인되지 않은 문제:
1. 동시 액세스 중에 파일을 읽고 쓰면 잠금 문제가 발생합니다.
2. 데이터 파일이 너무 많으면 성능이 어떤가요?
확장 아이디어:
1. JavaScript 데이터 정의 코드를 생성하고 클라이언트에서 호출합니다.
2. 아직 생각해보지 못했습니다...
함께 논의해보고 싶습니다.

위 내용은 2009nba 결승전 데이터 내용을 포함하여 2009nba 결승전 데이터 PHP 데이터 캐싱 기술을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿