Joinc 팀블로그 리눅스 메뉴얼 정리 Joinc 위키
댓글

Recent Comments

Powered by Disqus
팀블로그 카테고리
  전체 (1105)
   공지사항 (1)
   검색엔진 (21)
   기술동향 (58)
   게임 (2)
   독서 (6)
   리눅스 (12)
   보안 (1)
   사회문제 (22)
   어셈블리 (43)
   영화 (3)
   오픈소스 (10)
   음악 (9)
   인물 (1)
   포인터 (4)
   프로그래머 (23)
   팀블로그 (20)
   테터툴즈 (29)
   C/C++ (152)
   FireFox (11)
   Gimp (2)
   Google (98)
   Java (13)
   Perl (2)
   Pthread (11)
   STL (13)
   TCP/IP (8)
   Tools (31)
   Web2.0 (42)
   Wiki (1)
«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
2008/09/10 19:43

팀블로그용 RSS수집기 제작


예전에 RSS 리더기를 직접 만들어볼까 생각을 했었는데, 귀차니즘으로 포기하고 걍 있는거 가져다 쓰기로 했다.

사용 목적은 [http]팀블로그에 등록된 blog RSS를 가져오기 위함이다. 기존에 사용하던 planetplanet를 대체하기 위한 이유도 있다. 이거 너무 느린데다가 CPU를 무진장 잡아먹는다.

이왕이면 php로 작성된 걸 찾기를 원했는데, 이유는 다음과 같다.
  • 익숙한데다가
  • 스크립팅 언어라서 수정하기 쉽고
  • mysql 데이터베이스에 접근하기 좋다.
  • 덤으로 작성된 코드는 HTTP 프로토콜을 이용해서 실행시킬 수 있기 때문
  • php가 더러워서 안쓴다는 사람들도 봤는데, 해야될 일을 잘 해낼 수 있으면 끝.

구글님에게 php rss reader로 된 녀석을 찾아내놔라고 했더니, 첫 줄에 http://magpierss.source.net을 던져주더라. 구글을 믿고, 이걸 사용하기로 했다.

사용도 무지 간단하다. 그냥 압축풀고 HTTP호출했더니 끝이다. 다음은 핵심코드다. 필요없는 부분은 다 제거했다.
require_once('magpierss/rss_fetch.inc'); 

// $TeamUser 에는 팀블로그에 등록된 블로그 사이트의 정보들이 들어가 있다.
while(list($name, $url)=each($TeamUser))
{
// fetch_rss 한번 호출로 끝
$rss = fetch_rss($url);
$ctime = time();

// rss중에서 items의 정보를 가져오기로 했다.
// title, id, desc, 작성일 등등을 가져왔다.
foreach ($rss->items as $item)
{
$title = mysql_escape_string($item[title]);
$id = $item[link];
$desc = mysql_escape_string($item[description]);
$pubdate = $item[pubdate];
// 위에서 얻어온 정보를 이용해서 Query를 만들어서
// DB에 저장하면 끝이다.
}
}

이제 wget을 이용해서 위 스크립트를 포함한 페이지를 호출하는 방식으로 테스트를 해보았다.
# wget http://teamblog.joinc.co.kr/reader.php -O /dev/null 
오오. 잘되다.

마지막으로 crontab에 등록시키는 걸로 작업을 완료했다.
10 * * * * wget http://teamblog.joinc.co.kr/reader.php -O /dev/null 
매시 10분마다 rss 데이터를 읽어오도록 했다.

RSS 정보를 DB까지 쌓는 과정은 대략 다음과 같다. 기록차원에서 정리했다.
                 |   JOINC               MYSQL 
+-------+ HTTP | +------------+ +--------------------+
| wget |-------|->| reader.php |<-----| TeamBlog User Info |
+-------+ | | |---+ +--------------------+
| +------------+ | +-----------+
| +->| RSS Data |
| +-----------+
:::