- ベストアンサー
他のサーバーのファイルを読む
ある人(私とは別のサーバー)にCGIを配布する予定です。CGIにアクセスすると、私のサーバーに存在するデータファイルを読んで、データが更新されているかチェックする、そんな機能がほしいのですが、一般的にどういう技術を使っているのか全く分かりません。簡単にアドバイスいただけたらと思います。よろしくお願いします。言語はPerlです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
参照したいファイルは別サーバーにあるんですよね。 Socket使ってサーバーにアクセスかけちゃダメですか? 私のサイトに「Get Site with Socket」というスクリプトがあります。 指定したアドレスのファイルの中身を取得するものなのですが、参考になれば。 ただSocketが利用できる環境じゃないとどうしようもないので・・・
- 参考URL:
- http://w3.to/sephy
その他の回答 (4)
- puchi_pan
- ベストアンサー率50% (3/6)
HTTPでアクセスするのであれば、LWPモジュールを使えば簡単ですよ。 モジュールについては、CPAN(http://search.span.org/)で調べれます。 LWPモジュール等については、下のURLを参考にどうぞ。
お礼
ありがとうございます。 早速参考URL拝見しました。 いろいろなモジュールがあることは知っていましたが、 すべてについて日本語で解説があるのは嬉しいですね。 あのサイトを作った人には感謝しなければいけません。 モジュールについて全てが理解できてないので まだLWPのよさというのがわかりませんが、 とりあえず、一般的なSocketから入っていきたいと思います。 将来的にこのスクリプトのメンテの仕事を他の人に受け継ぐかもしれません。 (私自身はKENTさんのようなスクリプト開発を趣味にしている人間ではないので) そうした時に次の人が私のような初心者でも分かりやすいように、 処理が遅くても、なるべく基本から外れない単純な内容で 書いていきたいと思っています。
- puchi_pan
- ベストアンサー率50% (3/6)
データをどのように受け渡すかが問題でしょうが、簡単にしようと思うなら FTPやHTTPを利用してはいかがでしょうか?CGI配布先から katsudon さんの HTTPやFTPサーバーに接続してデータを取ってくるのであれば、サーバー側の 準備も簡単にできると思います。クライアント側(CGI設置先)は、いずれにし てもモジュール等を使えば簡単にファイル取得できますよ。 ↑(モジュール等)について、質問がれあれば、またどーぞ。
お礼
ありがとうございます! 掲示板やカウンターを作るだけだとあまりFTPやソケットを必要としないので、 具体的にどういうことをするのか全く分からない状態です。 ソケットについては詳しい解説のあるサイトを早速見つけたのですが、 自分のモノにするにはまだ時間がかかりそうです。FTP、HTTPも同様の状態で それぞれの利点を理解するには時間がかかります。 とりあえずFTP,HTTPについて具体的な方法を記述したサイトを探してみます。 ゆっくり進めていきますのでまたつまづいたらよろしくお願いします♪
補足
やっと概要がわかりました。HTTPでウチのサーバーにアクセスしてもらうことにしました。できれば一点知りたいのですが、Socketモジュールというのは一般的にすでに実装されているものなんでしょうか?特にモジュールを用意していないのに、ソケット接続は動作しているのですが・・・。ん?Perl5に含まれているのですか?
- toysmith
- ベストアンサー率37% (570/1525)
「CGIの走行するサーバ以外のサーバーに存在するファイルの更新確認」をしたいのですよね。 それとも「単にファイルの更新確認したい」ですか? 「katsudonさんのサーバーにCGIをおいてリモートで動かす」と言うのはダメなんですか? 各サーバのOSが知りたいところですね。 あと、katsudonさんのサーバにデーモンを追加して良いかどうかも。
補足
ありがとうございます!もうすこしくわしく説明します。 私の作っているのは地図サイトMapFanWebのような(超ローカルな)地図表示CGIです。半不特定多数の人に配布して(配布するときにユーザー登録してもらう)、ローカル地図コンテンツを作ってもらいます。 そのCGIには、CGIユーザー通しを結ぶリンク(ローカル地図通しを結ぶリンク)を装着したいんです。簡単に言うと歌舞伎町サイトへのリンクだったり、センター街サイトへのリンクだったりです。 ただ、地図ソフトMapFanの使用条件の兼ね合いから私のサーバーに各ユーザへのリンクページを用意してアクセスしてもらうのではなく、登録情報を各ユーザーのCGIに配信してCGI側で表示してもらいたいのです。 というわけで、だれかがCGIにアクセスすると私の(正確には開発元は私なんですが配布元、登録先は別の人です)サーバーへ登録情報の入ったファイルを読みに行くということが必要になります。 私のサーバーから(リモートということになりますか?)積極的に配信するという方法があるのでしたら、それでも構いません。まあできればこちらがユーザーのサーバーに介入することはしたくないですが。 配布元が私ではないので、彼が配布元をやめたいといっても代わりの人のサーバーで動かせるよう、なるべくどんなサーバーでも動く技術を使いたらと思います。
- Meddlesome
- ベストアンサー率39% (59/151)
ぱっと思いつくのはファイルの更新日時を比較して、 前回と違っていればメールなり、ポップアップウィンドウなりで知らせる方法でしょうか。 PerlはわかるんですがCGIは組んだ事がないので解らないのですが、アクセスするたびに更新日時をクッキーに保存しておけば先程挙げた方法でOKかと。
補足
ありがとうございます!すみません、説明不足でした。分かりやすいようにと思ったのですが簡単に書きすぎました。 更新されているかチェックするのではなく、正確にはデータファイルの中身を読み込んで出力するということです。
お礼
ありがとうございます! Socketという名前は知っているのですが、何をするものなのかも知らないものでよく分からないのですが、基本的にたぶんそれでできるようですね。 早速スクリプトをDLして自分の別サイトのデータファイルのURLを入力したのですが、リクエストを送信できませんでしたとなりました。なんでだろ? Socketについて記述のあるサイトを探して、深く調べてみたいと思います。それで全く進歩が無ければもう一度ここで質問したいと思います。 まだまだアドバイスは受けていますので何かありましたらお願いいたします。