ブログランキングのサイトを作っている最中、データの収集や記事の投稿、前日のバックアップ等を指定の時間で毎日定期的に実行したい。と思って、調べてみました。
前に試した際は、だいぶ難儀した覚えがありますが、今はとても簡単になってます。
これ、初めての人は参考になると思うので書いておきます。
今回のように定期的に自動作業をさせたい場合、サーバーの「cron」を利用します。
通常は設定ファイルを用意して、時間や実行ファイル名を指定するのですが、最近のサーバーでは、管理画面から簡単に設定できるものが増えています。
僕がメインで使っているレンタルサーバーは「heteml」。ここも、しばらく前から「cron」が無料の標準サービスになりました。(「heteml」は評価が分かれるものの、格安なのが取り柄ですね。)
下が、「heteml」の管理画面の「cron」設定。
このようにフォームに書き込むだけで、後は定期的にCGIが自動で起動してくれます。
超簡単! ビックリです。
注意する点は、CGIは、別な場所で実行されるということ。
今回は、今の時間のファイル名を書き出す簡単なCGI「test.cgi」で実験してみます。
例えば、以下のように「test」というフォルダーの中にCGIを置いて、ブラウザーからアクセスすると、同じ場所に「21****.txt」というファイルが作られます。(左側)
これを「cron」で実行すると、ユーザーのルートの場所にファイルが出来てきます。(右側)
なので、最初の「test」フォルダーにファイルを作るには、出力先をフルパスで指定する必要があります。
#my $file = "$hour$min$sec.txt";
my $file = "/home/sites/heteml/users**/*/*/*/****/web/test/$hour$min$sec.txt";
上が通常の書き方(下の書き方でも使えます)。下が「cron」を使う場合の書き方。
これさえ分かれば簡単。
もちろん、CGIにエラーが無いことが条件。「print "";」等もコメントアウトしておきましょう。(エラーメールが届きます)
これだけの作業で、記録ファイルの定期バックアップや、データ収集などのCGIを簡単に定時実行させる事ができます。
便利!
PS:作る人は今日は風邪でダウンです。
頭が回らないので、何も考えずに書けるネタにしておきました。
■2010 05/01追記
※現在、月額263円~の格安サーバー、
ロリポップでも、
「cron」が使えるようになっています。
■2010 05/01追記
※タスク スケジューラを使った、より簡単な方法の記事を追加しました。
→
プログラムやCGIを定期的に実行(タスク スケジューラ編)