웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
올블로그 명예의 전당글 가져오기 (캐쉬기능추가)
2006.04.17 16:36
http://www.allblog.net/Home/http://search.dyd.cc/simplereader.php아래의 내용은 간단하게 캐쉬 기능을 추가했습니다.
--------------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
//캐쉬기능추가
//1. 이파일과 동일한 경로에 cashe 라는 디렉토리를 생성한다.
//2. 퍼미션은 777로 준다.
$cashe_time = '10';//분단위, 숫자만
$cashe_dir = 'cashe';// /를 뺀 순수한 디렉토리명만
$cashe_file = preg_replace("`^(.*)(/[^/]+)$`", "1/" . $cashe_dir . "2", __FILE__);
if (!is_dir("./" . $cashe_dir)) {
echo "캐쉬 디렉토리가 존재하지 않습니다.";
exit;
}
//캐쉬 파일이 존재하고, 수정된 시간이 지정된 시간을 넘지 않았을 경우 인클루드 후 종료
if (is_file($cashe_file) && (filemtime ($cashe_file) + ($cashe_time * 60) > time())){
include $cashe_file;
exit;
}
ob_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Rss 읽어오기</title>
<style>
body {margin:0px 10px 3px 10px;padding:0}
body,td,select {font-family:Verdana,Gulim;font-size:9pt;}
td {overflow:hidden;text-overflow:ellipsis;}
td.description p {margin:0;padding:3 0 3 0;}
a.lnk1:link,a.lnk1:visited,a.lnk1:hover {color:#0000ff;text-decoration:underline;}
a.lnk2:link,a.lnk2:visited {color:#808080;text-decoration:none;}
a.lnk2:hover {text-decoration:underline;}
a.lnk3:link {color:#0000ff;text-decoration:none;}
a.lnk3:visited {color:#800080;text-decoration:none;}
a.lnk3:hover {text-decoration:underline;}
a.lnk4:link,a.lnk4:visited {color:#D2691E;text-decoration:none;}
a.lnk4:hover {text-decoration:underline;}
a.lnk5:link,a.lnk5:visited {color:#0000ff;text-decoration:none;}
a.lnk5:hover {background-color:#eeeeee;}
.header1 {font-weight:bold;font-size:12pt;}
.btn_submit1 {border:1px solid gray;width:40;height:20;background-color:white;font-family:Gulim;font-size:9pt;padding:2 0 0 0}
.btn_submit2 {border:1px solid #c0c0c0;width:34;height:18;background-color:white;font-family:Gulim;font-size:8pt;line-height:12pt}
</style>
<base target=_blank>
</head>
<body bgcolor='#ffffff'+ '>
<?php
//올블로그 명예의전당 rss 글내용이 하루에 한번만 바뀝니다.
$url = "http://www.allblog.net/Rss/BestPosts.xml";
$result = file($url);
$text = implode("n", $result);
if(!empty($text)){
$item = explode("<item>", $text);
$count = count($item);
echo "
<table width=100% border=0 cellpadding=0 cellspacing=0 style="table-layout:fixed;">
<tr><td>
<table width=100% border=0 cellpadding=0 cellspacing=0 style="table-layout:fixed;">
<tr>
<td align=right valign=top style="padding:0 4 0 0;font-size:8pt;color:gray" nowrap>총 <b>" . ($count - 1) . "</b>개 | 최종업데이트: " . date("Y-m-d H:i") . "</td>
</tr>
</table>
</td></tr>
<tr><td height=4></td></tr>
</table>
";
if (is_array($item) && count($item) > 1) {
for ($i = 1; $i < $count; $i++){
preg_match_all("`<title>(.+)</title><link>(.+)</link><source url=".+">(.+)</source><category>([^<]+)</category>(<category>([^<]+)</category>)?(<category />)?<pubDate>(.+)</pubDate><description><![CDATA[(.+)]]></description>`s", $item[$i], $matches);
if (is_array($matches[1]) && count($matches[1]) > 0) {
foreach($matches[1] as $key => $val){
$title = (!empty($val)) ? $val : '';
$link = (!empty($matches[2][$key])) ? $matches[2][$key] : '';
$source = (!empty($matches[3][$key])) ? $matches[3][$key] : '';
$category1 = (!empty($matches[4][$key])) ? $matches[4][$key] : '';
$category2 = (!empty($matches[6][$key])) ? $matches[6][$key] : '';
$category = (!empty($category1) && !empty($category2)) ? $category1 . ", " . $category2 : $category1 . $category2;
$pubDate = (!empty($matches[8][$key])) ? date("Y-m-d H:i", strtotime($matches[8][$key])) : '';
$description = (!empty($matches[9][$key])) ? $matches[9][$key] : '';
$description_len = number_format(strlen($description));
if (!preg_match("`(<s*t*imgs*t*|<s*t*as*t*href)`i", $description)) $description = strip_tags(str_replace(array("<", ">", "<br /><hr />위 내용은 올블로그가 올블로그에 등록한 블로그로부터 수집하여 서버에 저장하고 있는 내용의 전체 또는 일부 입니다. 이 게시물에 대한 모든 저작권과 책임은 해당 블로그의 등록자에게 있습니다."), array("<", ">", ""), $description)) . "<br /><hr />위 내용은 올블로그가 올블로그에 등록한 블로그로부터 수집하여 서버에 저장하고 있는 내용의 전체 또는 일부 입니다. 이 게시물에 대한 모든 저작권과 책임은 해당 블로그의 등록자에게 있습니다.";
echo "
<a href="" . $link . ""></a>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr><td bgcolor=#bdb76b><img width=1 height=1 alt=""></td></tr>
<tr><td bgcolor=#ebebd5 style='padding:5 2 6 2'>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr><td style="font-size:10pt"><a href="" . $link . ""><span style="font-weight:bold">" . $title . "</span></a></td></tr>
</table>
</td></tr>
<tr><td style='padding:4 2 0 2'>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr><td style='font-size:8pt;'> <font color=#808080>" . $pubDate . " 작성 <font color=#808080>| " . $category . "</font> <font color=#808080>| " . $description_len . "byte</font></font></td><td align=right style="font-family:Gulim;font-size:8pt;" nowrap> </td></tr>
</table>
</td></tr>
</table>
<table id="desc_9612007" width=100% border=0 cellpadding=0 cellspacing=0>
<tr><td style='padding:6 2 0 2;line-height:14pt;' class=description>" . $description . "</td></tr>
<tr><td height=10></td></tr>
</table>
<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td height=12></td></tr></table>
";
}
}
}
}
}
?>
</body>
</html>
<?php
$save_text = ob_get_contents();
ob_end_clean();
//캐쉬파일로 저장
$fp = @fopen($cashe_file, 'w');
if (empty($fp)) {
echo "캐쉬 디렉토리의 퍼미션을 확인하세요";
exit;
}
@fwrite($fp, $save_text);
@fclose($fp);
@chmod($cashe_file, 0777);
//출력
echo $save_text;
?>
--------------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
//캐쉬기능추가
//1. 이파일과 동일한 경로에 cashe 라는 디렉토리를 생성한다.
//2. 퍼미션은 777로 준다.
$cashe_time = '10';//분단위, 숫자만
$cashe_dir = 'cashe';// /를 뺀 순수한 디렉토리명만
$cashe_file = preg_replace("`^(.*)(/[^/]+)$`", "1/" . $cashe_dir . "2", __FILE__);
if (!is_dir("./" . $cashe_dir)) {
echo "캐쉬 디렉토리가 존재하지 않습니다.";
exit;
}
//캐쉬 파일이 존재하고, 수정된 시간이 지정된 시간을 넘지 않았을 경우 인클루드 후 종료
if (is_file($cashe_file) && (filemtime ($cashe_file) + ($cashe_time * 60) > time())){
include $cashe_file;
exit;
}
ob_start();
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Rss 읽어오기</title>
<style>
body {margin:0px 10px 3px 10px;padding:0}
body,td,select {font-family:Verdana,Gulim;font-size:9pt;}
td {overflow:hidden;text-overflow:ellipsis;}
td.description p {margin:0;padding:3 0 3 0;}
a.lnk1:link,a.lnk1:visited,a.lnk1:hover {color:#0000ff;text-decoration:underline;}
a.lnk2:link,a.lnk2:visited {color:#808080;text-decoration:none;}
a.lnk2:hover {text-decoration:underline;}
a.lnk3:link {color:#0000ff;text-decoration:none;}
a.lnk3:visited {color:#800080;text-decoration:none;}
a.lnk3:hover {text-decoration:underline;}
a.lnk4:link,a.lnk4:visited {color:#D2691E;text-decoration:none;}
a.lnk4:hover {text-decoration:underline;}
a.lnk5:link,a.lnk5:visited {color:#0000ff;text-decoration:none;}
a.lnk5:hover {background-color:#eeeeee;}
.header1 {font-weight:bold;font-size:12pt;}
.btn_submit1 {border:1px solid gray;width:40;height:20;background-color:white;font-family:Gulim;font-size:9pt;padding:2 0 0 0}
.btn_submit2 {border:1px solid #c0c0c0;width:34;height:18;background-color:white;font-family:Gulim;font-size:8pt;line-height:12pt}
</style>
<base target=_blank>
</head>
<body bgcolor='#ffffff'+ '>
<?php
//올블로그 명예의전당 rss 글내용이 하루에 한번만 바뀝니다.
$url = "http://www.allblog.net/Rss/BestPosts.xml";
$result = file($url);
$text = implode("n", $result);
if(!empty($text)){
$item = explode("<item>", $text);
$count = count($item);
echo "
<table width=100% border=0 cellpadding=0 cellspacing=0 style="table-layout:fixed;">
<tr><td>
<table width=100% border=0 cellpadding=0 cellspacing=0 style="table-layout:fixed;">
<tr>
<td align=right valign=top style="padding:0 4 0 0;font-size:8pt;color:gray" nowrap>총 <b>" . ($count - 1) . "</b>개 | 최종업데이트: " . date("Y-m-d H:i") . "</td>
</tr>
</table>
</td></tr>
<tr><td height=4></td></tr>
</table>
";
if (is_array($item) && count($item) > 1) {
for ($i = 1; $i < $count; $i++){
preg_match_all("`<title>(.+)</title><link>(.+)</link><source url=".+">(.+)</source><category>([^<]+)</category>(<category>([^<]+)</category>)?(<category />)?<pubDate>(.+)</pubDate><description><![CDATA[(.+)]]></description>`s", $item[$i], $matches);
if (is_array($matches[1]) && count($matches[1]) > 0) {
foreach($matches[1] as $key => $val){
$title = (!empty($val)) ? $val : '';
$link = (!empty($matches[2][$key])) ? $matches[2][$key] : '';
$source = (!empty($matches[3][$key])) ? $matches[3][$key] : '';
$category1 = (!empty($matches[4][$key])) ? $matches[4][$key] : '';
$category2 = (!empty($matches[6][$key])) ? $matches[6][$key] : '';
$category = (!empty($category1) && !empty($category2)) ? $category1 . ", " . $category2 : $category1 . $category2;
$pubDate = (!empty($matches[8][$key])) ? date("Y-m-d H:i", strtotime($matches[8][$key])) : '';
$description = (!empty($matches[9][$key])) ? $matches[9][$key] : '';
$description_len = number_format(strlen($description));
if (!preg_match("`(<s*t*imgs*t*|<s*t*as*t*href)`i", $description)) $description = strip_tags(str_replace(array("<", ">", "<br /><hr />위 내용은 올블로그가 올블로그에 등록한 블로그로부터 수집하여 서버에 저장하고 있는 내용의 전체 또는 일부 입니다. 이 게시물에 대한 모든 저작권과 책임은 해당 블로그의 등록자에게 있습니다."), array("<", ">", ""), $description)) . "<br /><hr />위 내용은 올블로그가 올블로그에 등록한 블로그로부터 수집하여 서버에 저장하고 있는 내용의 전체 또는 일부 입니다. 이 게시물에 대한 모든 저작권과 책임은 해당 블로그의 등록자에게 있습니다.";
echo "
<a href="" . $link . ""></a>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr><td bgcolor=#bdb76b><img width=1 height=1 alt=""></td></tr>
<tr><td bgcolor=#ebebd5 style='padding:5 2 6 2'>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr><td style="font-size:10pt"><a href="" . $link . ""><span style="font-weight:bold">" . $title . "</span></a></td></tr>
</table>
</td></tr>
<tr><td style='padding:4 2 0 2'>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<tr><td style='font-size:8pt;'> <font color=#808080>" . $pubDate . " 작성 <font color=#808080>| " . $category . "</font> <font color=#808080>| " . $description_len . "byte</font></font></td><td align=right style="font-family:Gulim;font-size:8pt;" nowrap> </td></tr>
</table>
</td></tr>
</table>
<table id="desc_9612007" width=100% border=0 cellpadding=0 cellspacing=0>
<tr><td style='padding:6 2 0 2;line-height:14pt;' class=description>" . $description . "</td></tr>
<tr><td height=10></td></tr>
</table>
<table width=100% border=0 cellpadding=0 cellspacing=0><tr><td height=12></td></tr></table>
";
}
}
}
}
}
?>
</body>
</html>
<?php
$save_text = ob_get_contents();
ob_end_clean();
//캐쉬파일로 저장
$fp = @fopen($cashe_file, 'w');
if (empty($fp)) {
echo "캐쉬 디렉토리의 퍼미션을 확인하세요";
exit;
}
@fwrite($fp, $save_text);
@fclose($fp);
@chmod($cashe_file, 0777);
//출력
echo $save_text;
?>
댓글 2
-
허므
2006.04.22 23:27
-
유창화
2006.04.23 11:38
캐쉬 디렉토리를 파일과 같은 경로에 만들어야 하며,
퍼미션도 아파치 웹서버가 쓰기 가능하도록 주어야 합니다
일반적으로 777 을 주면 됩니다.
fopen 함수가 지원되어야만 사용가능한 팁입니다.
파일은 utf-8로 저장하십시오.
제목 | 글쓴이 | 날짜 |
---|---|---|
mysql 안쓰는 간단한 게시판. [20] | 제로저아 | 2007.07.15 |
주민등록번호 검사기 [7] | 이진혁 | 2007.05.18 |
PHP스터디시리즈_php프로그램의 기초_연산자1 [1] | 에아 | 2007.04.28 |
PHP스터디시리즈_php프로그램 기초1 [6] | 에아 | 2007.04.09 |
PHP스터디시리즈_APM과 PHP의시작 [1] | 에아 | 2007.04.09 |
아무이유없이 만든 파일 메모장-ㅠ-;; [7] | 한태종 | 2007.02.25 |
다운로드 이어 받기 및 전송속도 제한 구현 [1] | 박원형 | 2006.12.11 |
sajax.php 소스 코드 분석 (자세한 한글 주석) | 유창화 | 2006.11.28 |
간단하게 만들어본 프레임워크 [2] | 유창화 | 2006.11.27 |
[PHP 동영상강의] 48. 엑셀파일 db에 넣기, 동적 select 구현 [8] | 서기 | 2006.10.27 |
[PHP 동영상강의] 47. phpmyadmin 최신버젼 설치하기 [3] | 서기 | 2006.10.27 |
네이버 메인페지 플래시광고처럼 들갈때마다 바뀌게 하기. [3] | 좋은남자 | 2006.08.30 |
[팁] 웹언어 개발자를 위한 고객 미디어플레이어 에러해결법 | 배광한 | 2006.07.24 |
PHP로 PDF만들기 1 | 행복한고니 | 2006.06.17 |
GD2를 이용한 간단한 이미지버튼 만들기... | 마땅해 | 2006.06.13 |
50줄로 만드는 웹메모 PHP 소스입니다. (웹사이트 포스트잇) [3] | 김성대 | 2006.05.17 |
중복파일 검사 후 (숫자)달기... [4] | 한치근 | 2006.04.20 |
올블로그 명예의 전당글 가져오기 (캐쉬기능추가) [2] | 유창화 | 2006.04.17 |
올블로그(http://www.allblog.net/Home/) 명예의 전당글 가져오기 [2] | 유창화 | 2006.04.17 |
네이버 openapi 사용하여 쇼핑검색 만들기 [3] | 유창화 | 2006.04.13 |
수동으로 생성해줫더만 에러만 뜸