ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • feedburner를 이용한 주기적인 프로그램 실행(crontab 대용)
    달을파는아이 2008. 5. 1. 11:06
    사이트를 만들다보면 주기적으로 돌리고 싶은 프로그램이 생기게 된다. 특정 데이타를 주기적으로 받아와야 한다던지 , 계속적으로 데이타를 가공해서 페이지를 만들어야 한다던지, 메인 페이지를 가볍게 하기위해서 메인 페이지를 미리 생성해놓는다던지 하는 등의 일이 생기게 된다.
     
    윈도우서버면 "작업스케줄러"를 쓰고, 리눅스서버면 crontab 을 쓴다. 하지만 서버를 돌릴만큼 넉넉하지 않다면? 호스팅을 쓰고 있고 crontab을 돌리고 싶어질때는  집에 컴터에 스케줄러를 돌리는 사람도 있고, 주기적으로 사람손으로 직접 프로그램을 실행시켜주기도 한다.
     
    일주일에 한번만 실행시켜주면 되겠지? 라고 생각하지만 사실 잘되지 않는다. 까먹고 건너뛸때가 많다. 스스로도 귀찮은 이 작업을 어떻게 하면 좋지? 라고 고민을 많이 했다.
     
    그러다가!!! feedburner(http://www.feedburner.com/)를 알게 되었다.
     
    feedburner는  트래픽 고민이 많은 블로거나 자주 블로그를 바꾸지만 RSS 피드 주소는 바꾸고 싶지 않은 블로거를 위해서 대신 피드해주는 사이트다. 사이트에 RSS 를 생성해놓고 feedburner에 등록을 해놓으면 주기적으로 RSS 주소를 읽어 들여서 새로운 주소로 뿌려준다.
     
    feedburner는 스케줄러는 아니다. 하지만 주기적으로 RSS 주소를 읽어들인다는 사실이 스케줄러로 사용가능하게한다. 물론 crontab 처럼 정확히 특정시간에 실행! 이런건 안된다. 꼭 특정시간에 실행해야해 하는 경우가 아니라면, 주기적으로 프로그램을 실행하고 처리하기에는 불편함이 없다.
     
    예를 들어, 로또 사이트 뱀로또(http://bemlotto.com/) 에 매회차 로또 번호가 있다. 처음에는 매주 토요일 로또번호가 발표되면 "국민은행" 사이트로 들어가서 번호를 보고 직접 입력을 했었다. 그러다가 너무 귀찮아서 국민은행 사이트 페이지를 긁어서 번호만 뽑아내는 프로그램을 만들고 토요일 밤쯤에 실행을 시켜주었다.
     
    몇주를 그렇게 하다보니 가슴속에서 불편함과 게으름이 솟구쳐 올랐다. 서버한대 있었으면 하는 생각이 간절해졌다. 그러다가 feedburner 아이디어가 번뜩 하고 생각이 나서 적용을 시켜 보았다. 생각외로 너무 잘돌아갔다. 토요일 밤쯤되면 "나눔로또" 홈페이지에서 로또 번호를 가져와서 디비에 저장을 해준다. 그렇게 몇달을 사용하고 있는데 아무런 문제가 없다.
     
    사용법은 간단하다. RSS 생성하는 페이지에 실행시킬 프로그램을 include 하면 된다.
     
     
    뱀로또를 보면 "이번주당첨번호 RSS FEED"가 있다.
     
    피드 주소가 http://feeds.feedburner.com/BemlottocomRss?format=xml 이다. 주소를 자세히 보면 알겠지만 feedburner 주소이다. 원래 뱀로또의 rss 피드 주소는 http://bemlotto.com/rss/t.php 이다. 피드버너에서 이페이지에 접근해서 뱀로또 rss 주소를 주기적으로 가져간다.
     
    원래는 t.php 는 뱀로또 디비에서 최신 당첨번호를 가져와서 rss로 만들어주는 역활을 한다. t.php 아래에 나눔로또에서 데이타를 가져오는 프로그램을 include 한다.

    include_once 'getLottoNum.php';//나눔에서 로또번호 데이타 가져오기

    이러면 t.php는 최신당첨번호를 rss로 만들어주는 역활과 나눔로또에서 최신 로또번호를 가져오는 역활 두개를 수행하게 된다. 왜 두가지를 실행해줘야하는가 하면, feedburner에서는 긁어갈때 RSS가 아니면 안 가져가기 때문이다.

    즉, RSS 를 생성해주는 것은 일종의 눈속임이라고 할 수 있다. 물론 뱀로또의 경우에는 RSS 생성도 중요한 일이기때문에 눈속임은 아니다. 실제 RSS는 필요없고 주기적으로 프로그램만 실행시켜야한다면, 임의로 RSS 를 만들어서 페이지 상단에 넣어두고 하단에는 실행시킬 프로그램을 include 하면된다.


    해보진 않았지만 똑같은 원리를 이용하면, 올블로그나 hanrss 도 되지 않을까 하는 생각을 해본다. 서버없이 호스팅에 의지하는 궁휼한 분들에게 유용한 정보가 되길 바랍니다.

     

    댓글

달을파는아이 @ nalab.kr