ちょっと先の未来クイズ第4問

表題の通りです。
毎日明け方4時に同じCGIプログラムを動かしたいのですが、どうすれば良いのかわからないので、調べてみたら、毎日同じ時間にCGIを実行させるJavaScriptを仕込んだWebページをアップしておいたら・・・というのがありました。
しかし具体的にこんなコードとまで書いてなかったので、質問をあげました。
どんなコーディングになるのでしょう。

A 回答 (2件)

考え方だけですが、cronが使えない環境でどうしてもやるとしたら、


こんな感じでしょうか。

<meta>タグで1分おきとか、数分おきにrefreshするページを作成し、
そこからCGIを呼び出すようにしておく。
http://www.tohoho-web.com/html/meta.htm

時刻の判断は、javascriptでやるか/CGIでやるかどちらかですね。

重複起動とか考えると、CGI側のほうが良いように思えます。

CGIで4時を過ぎていたら、処理済みの印がないか確認し、なかったら
重複実行を防ぐためのロック処理をし、ロックできたら本来やる中身を
実行し、処理済みの印を残す。
    • good
    • 0

がると申します。


んっと………取り合えず順を追って。

まずCGIですが、これは基本的に「HTTPから叩かれて動くプログラム」なので、CGIが「指定された時間に自動的に動く」ことはないです。
ので、取り合えず都合よく、質問文から「CGI」を削除して「プログラム」と読み替えて見ます。
次にJavaScriptですが。これはHTMLの中に埋め込まれて「閲覧するときに動くプログラム」なので(厳密には違うものもありますがほぼこんなもんです)、やはり「定期的に動く」仕組みっていうのはないです。

で。そのあたりを踏まえて
「毎日同じ時間にCGIを実行させるJavaScriptを仕込んだWebページをアップしておいたら」という発言に近しいものを考えると…。

1.指定された時刻(今回ですと明け方の4時ですか)頃に「誰かがCGIを叩いてくれるであろう」ことを期待してCGIを作成
これは、簡単にかくと「午前4時ごろに誰かがWebアクセスをしてきたら、それをタイミングにして動かしたいCGIをキックする」やり方です。
別途、ロックファイルなどを使って「二重起動」を避ける必要がありますが。

2.おとなしくcronその他を使う
通常、定期的にプログラムを動かすのには、UNIX系ですとcronというものを使います。
ただ、これはきちんとした設定などが不可欠なので、出来ない環境というのも少なからずあるかと思います。

以上…なんかぜんぜん回答になっていなくて恐縮ですが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!