예전에 RSS 리더기를 직접 만들어볼까 생각을 했었는데, 귀차니즘으로 포기하고 걍 있는거 가져다 쓰기로 했다.
사용 목적은
팀블로그에 등록된 blog RSS를 가져오기 위함이다. 기존에 사용하던 planetplanet를 대체하기 위한 이유도 있다. 이거 너무 느린데다가 CPU를 무진장 잡아먹는다.이왕이면 php로 작성된 걸 찾기를 원했는데, 이유는 다음과 같다.
- 익숙한데다가
- 스크립팅 언어라서 수정하기 쉽고
- mysql 데이터베이스에 접근하기 좋다.
- 덤으로 작성된 코드는 HTTP 프로토콜을 이용해서 실행시킬 수 있기 때문
- php가 더러워서 안쓴다는 사람들도 봤는데, 해야될 일을 잘 해낼 수 있으면 끝.
사용도 무지 간단하다. 그냥 압축풀고 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 |
| +-----------+
:::
이글과 관련된 글