Cazperのつれづれ日記: 【自作でWebcronだ】RSSリーダを利用して擬似的にcronを実行する

« 行動・考え方は直ぐに変えられるが、性格は直ぐには変わらない | メイン | 【散歩】桜の開花 »

2009年3月21日

panda01.gif 【自作でWebcronだ】RSSリーダを利用して擬似的にcronを実行する

WEB系のプログラムでは定期的に他のサイトの情報を取得したかったりします。そこで重宝するのがcronサービスです。

Unix系OSでは標準で入っているcronサービスですが、多くのレンタルサーバではcronサービスが提供されていなかったりします。

そのニーズに応えるようにWebcronというWEBでcronサービスを提供してくれる企業がありました。しかし、このサービスは今年から有料化されてしまいまして、個人レベルのWEBプログラマには手痛い状態です。

そんなわけで、Webcronに変わって定期的にURLを叩いてくれるようにするサービスを自作してみました。(WEBで提供されているRSSリーダを利用するので、自分が指定した時間に更新させる事は出来ません)

それではプログラムを見てみましょう。利用した言語はPerlです。

#!/usr/bin/perl

##################################################
## RSSをそのまま取得・表示しつつ目的のURLを叩く
## 2008.3.21 (c)Keisuke ABE http://www.cazoo.jp/blog/
## KEISUKE ABE fembem@ホットメール.com
##################################################

##################################################
# 使用するパッケージ
##################################################

use CGI::Carp 'fatalsToBrowser';
use CGI ':all';

##################################################
# 設定場所
##################################################

###適当に表示したいRSSのサイトをURL指定してください。(rdfやxmlファイル等々)
$url_rss = 'http://ranking.rakuten.co.jp/rss/100387.xml';

###実際に叩きたいURLを指定(cronで指定したいサイト)
$url_cron = 'http://www.cazoo.jp/finance/equity/ipo/cgi/ipoget.cgi';

###Agentの指定(偽装に重要)
$WgetAgent = 'compatible; MSIE 6.01; Windows Me';

##################################################
# プログラム本体
##################################################

#########################
# サブルーチン群 #
#########################
### GET送信
sub wget{
my $url = shift;
$url = 'http://' . $url unless $url =~ m!^http://|https://|ftp://!;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent($WgetAgent . $ua->agent);
my $req = HTTP::Request->new( GET => $url );
my $res = $ua->request($req);

if ($res->is_success) {
return $res->content;
} else {
print "Content-type: text/plain;\n\n";
print "Getに失敗しますた : " . $res->status_line . "\n";
exit;
}
}

#########################
# 実行シーケンス #
#########################

##########ホムペから情報GETしたりURLを叩いたり
$html0 = wget($url_cron);
$html1 = wget($url_rss);

print "Content-type: text/html\n\n";
print $html1;

#print "END \n";
__END__

このプログラムを実行できる状況(ファイル属性755等)にして、このファイルをはてなRSS等に登録します。


具体例を書いておきます。今回は試しに「 http://www.cazoo.jp/test/crontest.cgi 」にRSSを取得・表示するファイルを置きました。(定期的に叩きたいURLは「http://www.cazoo.jp/finance/equity/ipo/cgi/ipoget.cgi」です。)

これをはてなRSSに登録します。

このCGIは楽天の売れ筋ランキングRSSを表示させますので以下のような登録画面が出てきます。

これで追加すれば...はてなRSSで楽天売れ筋ランキングを取得する度に定期実行したいWEBサービスも実行できます。

投稿者 cazper : 2009年3月21日 11:18 | b_entry.gif
     

トラックバック

このエントリーのトラックバックURL:
http://www.cazoo.jp/cgi/mt/mt-tb.cgi/2485

コメント