SIR 메인처럼 24시간 인기 게시물 통합 (캐쉬 활용 예제 마지막) 정보
최신글 SIR 메인처럼 24시간 인기 게시물 통합 (캐쉬 활용 예제 마지막)첨부파일
본문
author : 유창화 (yoo chang hwa)
version : 1.0.2
regist : 2012-12-30
modify : 2013-01-01
comment : PHP 확장 라이브러리, PHP5 이상, UTF-8 전용
lisence : 상업적, 비상업적 사용 제한 없음, 배포, 수정 제한 없음, 단, 교육(강좌), 출판에는 동의 없이 사용할수 없음
db schema
//캐쉬
CREATE TABLE IF NOT EXISTS `ex_cache` (
`cache_subject` varchar(50) NOT NULL,
`cache_position` varchar(30) NOT NULL,
`cache_seriaize` longtext NOT NULL,
`cache_time` int(11) NOT NULL,
PRIMARY KEY (`cache_subject`,`cache_position`),
KEY `cache_position` (`cache_position`),
KEY `cache_time` (`cache_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
### 설치 방법 ###
압축을 풀어서 ftp로 올립니다.
기존에 동일한 디렉토리, 파일이 있다면 덮어 씌웁니다.
디비에 아래 테이블을 추가합니다.
CREATE TABLE IF NOT EXISTS `ex_cache` (
`cache_subject` varchar(50) NOT NULL,
`cache_position` varchar(30) NOT NULL,
`cache_seriaize` longtext NOT NULL,
`cache_time` int(11) NOT NULL,
PRIMARY KEY (`cache_subject`,`cache_position`),
KEY `cache_position` (`cache_position`),
KEY `cache_time` (`cache_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
기존에 있다면, 그대로 놔두면 됩니다.
### 적용방법 ###
같이 첨부된 sample.php 를 참고 하시면 됩니다.
version : 1.0.2
regist : 2012-12-30
modify : 2013-01-01
comment : PHP 확장 라이브러리, PHP5 이상, UTF-8 전용
lisence : 상업적, 비상업적 사용 제한 없음, 배포, 수정 제한 없음, 단, 교육(강좌), 출판에는 동의 없이 사용할수 없음
db schema
//캐쉬
CREATE TABLE IF NOT EXISTS `ex_cache` (
`cache_subject` varchar(50) NOT NULL,
`cache_position` varchar(30) NOT NULL,
`cache_seriaize` longtext NOT NULL,
`cache_time` int(11) NOT NULL,
PRIMARY KEY (`cache_subject`,`cache_position`),
KEY `cache_position` (`cache_position`),
KEY `cache_time` (`cache_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
### 설치 방법 ###
압축을 풀어서 ftp로 올립니다.
기존에 동일한 디렉토리, 파일이 있다면 덮어 씌웁니다.
디비에 아래 테이블을 추가합니다.
CREATE TABLE IF NOT EXISTS `ex_cache` (
`cache_subject` varchar(50) NOT NULL,
`cache_position` varchar(30) NOT NULL,
`cache_seriaize` longtext NOT NULL,
`cache_time` int(11) NOT NULL,
PRIMARY KEY (`cache_subject`,`cache_position`),
KEY `cache_position` (`cache_position`),
KEY `cache_time` (`cache_time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
기존에 있다면, 그대로 놔두면 됩니다.
### 적용방법 ###
같이 첨부된 sample.php 를 참고 하시면 됩니다.
추천
10
10
댓글 전체
캐쉬 활용 예제 마지막입니다.
여러 기준별 인기글과 통합형 인기글을 한꺼번에 처리 가능합니다.
캐쉬는 1개만 사용 됩니다.
통합형 인기글 정렬 순서는 'good, down, scrap, comment' 와 같이
순서를 정해주시면 됩니다.
높은 점수로 처줄 항목을 앞쪽에 배치하시면 됩니다.
당분간 바쁜 일로 올리지 못할것 같고
추후 다른 예제로 다시 찾아뵙도록 하겠습니다.
여러 기준별 인기글과 통합형 인기글을 한꺼번에 처리 가능합니다.
캐쉬는 1개만 사용 됩니다.
통합형 인기글 정렬 순서는 'good, down, scrap, comment' 와 같이
순서를 정해주시면 됩니다.
높은 점수로 처줄 항목을 앞쪽에 배치하시면 됩니다.
당분간 바쁜 일로 올리지 못할것 같고
추후 다른 예제로 다시 찾아뵙도록 하겠습니다.
멋진 작품입니다. 감사합니다.ㅎ
감사합니다.
오 ~~
오 ~~ 감사합니다.
_EX::get_cache($check_time, $cache_subject, $cache_position) 활용법
캐쉬를 한페이지내에 아래와 같이
_EX::save_cache('s1', 'main', $cache_data1);
_EX::save_cache('s2', 'main', $cache_data2);
_EX::save_cache('s3', 'main', $cache_data3);
_EX::save_cache('s4', 'main', $cache_data4);
_EX::save_cache('s5', 'main', $cache_data5);
만들었다면
캐시를 불러올때 개별적으로 불러오면 모두 내부적으로 5번의 쿼리를 날리게 됩니다.
$cache_data1 = _EX::get_cache(600, 's1', 'main');
$cache_data2 = _EX::get_cache(600, 's2', 'main');
$cache_data3 = _EX::get_cache(600, 's3', 'main');
$cache_data4 = _EX::get_cache(600, 's4', 'main');
$cache_data5 = _EX::get_cache(600, 's5', 'main');
그러나.....
$cache = _EX::get_cache(600, '', 'main');
와 같이 사용한다면, 한번의 쿼리로 5개의 캐쉬 데이타를 모두 가져옵니다.
캐쉬를 한페이지내에 아래와 같이
_EX::save_cache('s1', 'main', $cache_data1);
_EX::save_cache('s2', 'main', $cache_data2);
_EX::save_cache('s3', 'main', $cache_data3);
_EX::save_cache('s4', 'main', $cache_data4);
_EX::save_cache('s5', 'main', $cache_data5);
만들었다면
캐시를 불러올때 개별적으로 불러오면 모두 내부적으로 5번의 쿼리를 날리게 됩니다.
$cache_data1 = _EX::get_cache(600, 's1', 'main');
$cache_data2 = _EX::get_cache(600, 's2', 'main');
$cache_data3 = _EX::get_cache(600, 's3', 'main');
$cache_data4 = _EX::get_cache(600, 's4', 'main');
$cache_data5 = _EX::get_cache(600, 's5', 'main');
그러나.....
$cache = _EX::get_cache(600, '', 'main');
와 같이 사용한다면, 한번의 쿼리로 5개의 캐쉬 데이타를 모두 가져옵니다.
썸네일 관련 코드 어제 정말 잘 봤습니다.
스킨공개 감사드립니다. 서서서서서선추!!!
스킨공개 감사드립니다. 서서서서서선추!!!
네에 감사합니다.!!!
감사히 잘쓰겠습니다!..
고맙습니다~!.
good!!!
네 감사합니다.
항상 감사합니다! 잘 쓰겠습니다.!
두가지 여쭤 봐도 될까요!
$cache_subject는 어떤 의미인지 알겠습니다. 그런데
$cahe_position 은 어떤 의미 인가요? 예제나 댓글에 보면, 'all', 'main' 이라고 되어있는데,
이것은 어떤 포지션을 나타내는 것인가요?
또, html을 출력된 부분을 캐쉬에 담는 방법의 예제하나만 들어주시면 안될까요?
ob_start();
.....
$contents = ob_get_contents();
ob_end_clean();
_EX::save_cache('home', 'left', $contents);
이렇게 하면 될까요
두가지 여쭤 봐도 될까요!
$cache_subject는 어떤 의미인지 알겠습니다. 그런데
$cahe_position 은 어떤 의미 인가요? 예제나 댓글에 보면, 'all', 'main' 이라고 되어있는데,
이것은 어떤 포지션을 나타내는 것인가요?
또, html을 출력된 부분을 캐쉬에 담는 방법의 예제하나만 들어주시면 안될까요?
ob_start();
.....
$contents = ob_get_contents();
ob_end_clean();
_EX::save_cache('home', 'left', $contents);
이렇게 하면 될까요
네에 질문 감사합니다.
$cache_subject 는 이 캐쉬는 어떤 캐쉬를 의미하는가를 나타냅니다.
쓰기 나름이지만 hot_post10, new_post10 ..... 이런식으로요.
$cahe_position 는 어느 페이지에서 사용되는지 구분 하기 위한 것입니다.
보통 보면 인기글 같은 경우는 왼쪽이나 오른쪽에 딸려서 모든 페이지에서
나오기 마련인데 그런경우 'all' 과 같이 설정해놓으면
$cache = $cache = get_cache(600, '', 'all');
과 같은 방법으로
캐쉬를 가져올때 'all' 로 설정된 캐쉬를 한방에 모두 가져올수 있습니다.
특정 캐쉬들은 메인에서만 사용 된다면, $cahe_position 을 'main' 으로 다 생성하고
불러올때는 'main' 으로만 불러와서 배열형태로 한번에 사용할수 있습니다.
캐쉬의 목적은 여러가지가 있겟지만
가장 부하의 원인이 되는 많은 쿼리수를 줄이는 것과 처리과정을 생략하는데에 제일 큰 목적이 있습니다.
따라서 캐쉬를 가져올때도 많은 쿼리를 사용한다면 원래 목적에 위배되겟지요.
한마디로 다시 정의 하자면
$cahe_position 을 쓰는 목적은 캐쉬를 가져오기 위한 쿼리수를 줄이기 위한 용도입니다. 하나의 페이지에서 쓰여질 캐쉬를 한방에 다 가져오기 위한 것 입니다.
html 문서의 캐쉬 저장도 raineye 님처럼 그렇게 하시면 됩니다.
_EX::save_cache('home', 'left', $contents);
이렇게 저장하였다면
$cache = get_cache(600, 'home', 'left');
$contents = $cache['home']['left'][0];
이렇게 쓰시면 되겠습니다.
[0] 붙는 이유는 저장시 항상 배열로 만들어서 저장하기 때문에
배열이 아닌 경우에는 배열로 변환시 첫번째 데이타로 들어가기 때문입니다.
질문 감사합니다.
$cache_subject 는 이 캐쉬는 어떤 캐쉬를 의미하는가를 나타냅니다.
쓰기 나름이지만 hot_post10, new_post10 ..... 이런식으로요.
$cahe_position 는 어느 페이지에서 사용되는지 구분 하기 위한 것입니다.
보통 보면 인기글 같은 경우는 왼쪽이나 오른쪽에 딸려서 모든 페이지에서
나오기 마련인데 그런경우 'all' 과 같이 설정해놓으면
$cache = $cache = get_cache(600, '', 'all');
과 같은 방법으로
캐쉬를 가져올때 'all' 로 설정된 캐쉬를 한방에 모두 가져올수 있습니다.
특정 캐쉬들은 메인에서만 사용 된다면, $cahe_position 을 'main' 으로 다 생성하고
불러올때는 'main' 으로만 불러와서 배열형태로 한번에 사용할수 있습니다.
캐쉬의 목적은 여러가지가 있겟지만
가장 부하의 원인이 되는 많은 쿼리수를 줄이는 것과 처리과정을 생략하는데에 제일 큰 목적이 있습니다.
따라서 캐쉬를 가져올때도 많은 쿼리를 사용한다면 원래 목적에 위배되겟지요.
한마디로 다시 정의 하자면
$cahe_position 을 쓰는 목적은 캐쉬를 가져오기 위한 쿼리수를 줄이기 위한 용도입니다. 하나의 페이지에서 쓰여질 캐쉬를 한방에 다 가져오기 위한 것 입니다.
html 문서의 캐쉬 저장도 raineye 님처럼 그렇게 하시면 됩니다.
_EX::save_cache('home', 'left', $contents);
이렇게 저장하였다면
$cache = get_cache(600, 'home', 'left');
$contents = $cache['home']['left'][0];
이렇게 쓰시면 되겠습니다.
[0] 붙는 이유는 저장시 항상 배열로 만들어서 저장하기 때문에
배열이 아닌 경우에는 배열로 변환시 첫번째 데이타로 들어가기 때문입니다.
질문 감사합니다.
<?php
$check_time = 600;//600초, 10분
$cache_subject = 'home';
$cache_posion = 'left';
$cache = _EX::get_cache($check_time, $cache_subject, $cache_posion);
if(!is_array($cache[$cache_subject][$cache_posion])) {
ob_start();
.....
$contents = ob_get_contents();
ob_end_clean();
_EX::save_cache($cache_subject, $cache_posion, $contents);
echo $contents;
}
else {
$contents = $cache[$cache_subject][$cache_posion][0];
echo $contents;
}
?>
$check_time = 600;//600초, 10분
$cache_subject = 'home';
$cache_posion = 'left';
$cache = _EX::get_cache($check_time, $cache_subject, $cache_posion);
if(!is_array($cache[$cache_subject][$cache_posion])) {
ob_start();
.....
$contents = ob_get_contents();
ob_end_clean();
_EX::save_cache($cache_subject, $cache_posion, $contents);
echo $contents;
}
else {
$contents = $cache[$cache_subject][$cache_posion][0];
echo $contents;
}
?>
훌륭한 코드와
상세한 답변 너무 감사합니다 밑의 코드 예제도 너무 감사합니다.
저는 오래전에 완전 까막눈일때 부터 PHP를 유창화님께 다 배우는듯하네요~
다시 한번 감사드립니다
상세한 답변 너무 감사합니다 밑의 코드 예제도 너무 감사합니다.
저는 오래전에 완전 까막눈일때 부터 PHP를 유창화님께 다 배우는듯하네요~
다시 한번 감사드립니다
고맙습니다.
최근글에서 기준점을 이렇게 쉽게 표현해 주시다니 많은 공부가 되었습니다..^^
네에 감사합니다. ^^
이게 하나 하나 잘 뜯어보면
공부하기 참 좋은 소스인데.......
많이 안봐서 안타깝습니다.
공부하기 참 좋은 소스인데.......
많이 안봐서 안타깝습니다.
사진부터 아이콘부터 다 바뀐모습이 더 굿. 사진보고 좋아요 눌러요 부끄
네에 감사합니다.
안그래도 요쪽좀 한번 보려고 했었는데..
좋은스킨 올려주셔서 감사합니다 ^^
좋은스킨 올려주셔서 감사합니다 ^^
네에 감사합니다.^^
초보라 적용법을 아예 몰라 그냥 보고만가네요 ㅎㅎ,,아무리 글을 읽어도 제 수준에선 이해가 어렵네요,,ㅠ
네에.. 제아이디로 검색하시면 관련된게 조금 있는데
순서대로 한번 보시면 조금 이해는 되지 않을까 싶습니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_skin&sfl=mb_id,1&stx=dbckdghk
최근 게시물 최신 댓글 부터 보시면 될거 같습니다.
전부 연결된 내용입니다.
순서대로 한번 보시면 조금 이해는 되지 않을까 싶습니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_skin&sfl=mb_id,1&stx=dbckdghk
최근 게시물 최신 댓글 부터 보시면 될거 같습니다.
전부 연결된 내용입니다.
감사합니다.
네에 고맙습니다
감사합니다
_EX::auto_include('hot');
이부분에서
Fatal error: Class '_EX' not found i
에러가 나네요 ㅠ
이부분에서
Fatal error: Class '_EX' not found i
에러가 나네요 ㅠ