perlの質問です。

ブラウザでCGIファイルを呼び出して実行していると思うのですが、「タイマーを設定して自動的に何時になったらsample.cgiを実行する。」というようなことがしたいです。何か方法ありますでしょうか。よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/05/18 22:35:36
  • 終了:2006/05/21 08:32:12

回答(7件)

id:x31 No.1

x31回答回数106ベストアンサー獲得回数12006/05/18 22:44:25

ポイント17pt

サーバーでcronに時間を設定するのが一般的だと思います。

普通のレンタルサーバーではあまり許可されていないかもしれません。

cronについて

http://www.express.nec.co.jp/linux/tech/knowledge/system/crond.h...

id:bonlife No.2

回答回数421ベストアンサー獲得回数752006/05/18 22:45:19

ポイント17pt

バッチ処理を行いたいということでしょうか。

UNIX系のOSであればcronを使うと良いでしょう。

[参考URL]

id:tamo2_xvi No.3

tamo2_xvi回答回数436ベストアンサー獲得回数102006/05/18 22:46:50

ポイント17pt

http://www.express.nec.co.jp/linux/tech/knowledge/system/crond.h...

サーバによると思いますが、私はこちらを利用しています。

id:rain2003

早いお返事ありがとうございます。

ご紹介いただきました3つリンク先見てみましたが、ちょっと読んだだけではわからなかったので、もうちょっと見てみたいと思います。

検索したところ、

http://ninkiweb.net/server/cron.html

こんなページを見つけました。

手順としては、

①telnetでログイン

②crontab -e

③設定ファイルを編集

 [例] 0 0-23/4 * * * /home/sample.cgi

とすると、自動的にファイルが読まれて実行されるのでしょうか?

それとも、

[例] 0 0-23/4 * * * /home/sample.sh

shファイルを作って、その中にsample.cgiを呼び出す処理を記述しないといけないでしょうか。自分で調べられるか不安なので具体的な書き方などお願いできますでしょうか。

2006/05/18 23:59:51
id:villain No.4

villain回答回数174ベストアンサー獲得回数122006/05/19 01:07:21

ポイント2pt

CGIはブラウザが呼び出しているわけではありません。

クライアント側がサーバにファイルを要求(リクエスト)した際に

そのファイルがCGIだったとき、サーバがCGIスクリプトを実行

します。

その実行結果のみをリクエスト結果としてクライアント側に

返します。

クライアント<->サーバ間の通信は普通のHTMLなどの通信と

まったく変わりません。


クライアントのタイミングに合わせてリクエストを繰り返す場合は

JavaScriptでタイマーを使用してください。

ただし、クライアント側がJavaScriptを有効にしている必要が

あります。


id:rain2003

>クライアントのタイミングに合わせてリクエストを繰り返す場合はJavaScript

JavaScriptは詳しくないのですが、そのページを開いていないとだめですよね?

cronについてのご回答お待ちしております。

2006/05/19 02:02:29
id:villain No.5

villain回答回数174ベストアンサー獲得回数122006/05/19 02:41:08

ポイント2pt

CGIはクライアント側から要求があって初めて実行できるもの

なので、サーバ側が勝手に実行してその情報を勝手にクライアント

側に送信することはできません。

(そもそも、どのクライアントに送信したらいいのかサーバ側は

分かりませんし)


Locationヘッダを使用したリダイレクトはヘッダを受信した

クライアント側が再度そのURLへのリクエストを発行することで

実現しているのでこれもクライアント側からの要求に応えている

だけです。


バッチ処理はサーバローカル上のみでの実行になりサーバ側が

クライアント側に指定時刻にリクエストを発行させるようなことは

できません。

クライアント側が定期的にリクエストを発行するにはJavaScript

などを使用する以外はありません。

(クライアント側のローカルでサービスなどのような感じで

常に常駐/監視している場合は別ですが)


取り敢えず、CGIとして動かすならサーバ側ではなくクライアント

側に細工しないといけません。


何をしたいのかによって異なりますが...。

(あまり的を射た回答でなくて申し訳ありません)


URLはダミーです。

id:rain2003

>取り敢えず、CGIとして動かすならサーバ側では

>なくクライアント側に細工しないといけません。

>何をしたいのかによって異なりますが...。

>(あまり的を射た回答でなくて申し訳ありません)

できるっていう方、できないっていう方がいらっしゃってちょっと混乱してきました。^^;

WINDOWS+ActivePerlでプログラムを作っているとき、コマンドプロンプトで、Perl sample.cgi

って打つと実行してくれます。

そんな感じでcronを使って実行できるのかなぁと思ったのですが。

例えは、sample.cgiの中身が、

クライアントのブラウザに何か表示させるということではなくて

・ファイルのバックアップ(コピー保存)

・メールのリストをファイルから読み込んでsendmailを使って送信

っていう場合、無理なんでしょうか?

2006/05/19 03:57:39
id:zelazny No.6

zelazny回答回数95ベストアンサー獲得回数122006/05/19 14:17:08

ポイント25pt

シェル上でwgetというコマンドが使えるのなら、ブラウザで読む動作の代わりをしてくれます。オプション指定でパラメーターも渡せますので、cronでwgetを起動するようにすればいいと思います。

http://tech.bayashi.net/svr/doc/wget.html

id:rain2003

wgetっていうコマンドがあるのですね。

とても参考になりました。

シェルってよく効く言葉ですね。意味や使い方など勉強してみます。

2006/05/19 20:57:05
id:x31 No.7

x31回答回数106ベストアンサー獲得回数12006/05/19 16:07:31

ポイント40pt

 [例] 0 0-23/4 * * * /home/sample.cgi

とすると、自動的にファイルが読まれて実行されるのでしょうか?

それとも、

[例] 0 0-23/4 * * * /home/sample.sh

shファイルを作って、その中にsample.cgiを呼び出す処理を記述しないといけないでしょうか。自分で調べられるか不安なので具体的な書き方などお願いできますでしょうか。

どちらでもオッケーだと思います。

例のような書式で、sample.shやsample.cgiが実行されます。

・ファイルのバックアップ(コピー保存)

・メールのリストをファイルから読み込んでsendmailを使って送信

っていう場合、無理なんでしょうか?

ファイルのコピーもメールのリストを送ることもできると思います。

シェルスクリプトでもPerlスクリプトでも、あとは書き方次第だと思います。

http://www.yahoo.com/

URLはダミーです。

id:rain2003

おおお、どちらでも大丈夫だったんですね。

シェルスクリプト、、、メモしました。

変なことしたら怖いと思って、まだ試してなかったのですが、とりあえずなにかやってみたいと思います。

2006/05/19 21:07:50

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません