- ベストアンサー
外部サーバーのページの最終更新日時を表示させたい
今まで、自分のサイト・サーバー内の日記(自家CGI)の、最新記事だけトップページにSSIで表示していました。 今度、日記にブログ(外部サーバー)を取り入れたのですが、それがいつ更新されたのかを自分のサイトのトップページに表示させる方法はありますでしょうか? SSIは外部サーバーの為勿論使えませんよね・・・。 このカテゴリであっているのかわかりませんが、よろしくオネガイシマス。m(ーvー)m
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
えとですね……。 --------------------------○ #!/usr/local/bin/perl $host = 'www.provider.com'; $path = '/~account/index.htm'; use Socket; $address = inet_aton($host) || return -1; $sockaddress = sockaddr_in(80, $address); socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || return -1; connect( SOCK, $sockaddress ) || return -1; binmode(SOCK); select(SOCK); $| = 1; select(STDOUT); print SOCK "HEAD $path HTTP/1.0\r\n"; print SOCK "Host: $host\r\n"; print SOCK "Connection: close\r\n"; print SOCK "\r\n"; @head = <SOCK>; close(SOCK); map{if(/^date:\s*([^\r\n]+)[\r\n]*$/i){print $1;}}@head; print ' '; exit; --------------------------○ このプログラムを hizuke.cgi とかファイルに保存して、パーミッションを 755 にして、あとはSSIとして呼び出せばOKのはずです。 でも巧く動かなかったらあしからず(^_^;
その他の回答 (1)
SSIでやる方法はあるにはありますが……。 ソケット開いて HTTP プロトコルの HEAD メソッドを発行するとか、そういう方法です。 ……分かります?(^_^; --------------------------○ $host = 'www.provider.com'; $path = '/~account/index.htm'; use Socket; $address = inet_aton($host) || return -1; $sockaddress = sockaddr_in(80, $address); socket( SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || return -1; connect( SOCK, $sockaddress ) || return -1; binmode(SOCK); select(SOCK); $| = 1; select(STDOUT); print SOCK "HEAD $path HTTP/1.0\r\n"; print SOCK "Host: $host\r\n"; print SOCK "Connection: close\r\n"; print SOCK "\r\n"; @head = <SOCK>; close(SOCK); --------------------------○ 多分これでイケるんじゃないかなーとか思っちゃったりしますが(^_^; $host と $path に取得したいURLに関する情報をセットすると、最後の @head の中に、相手先の更新日付とかそういうのがHTTP形式で戻ってくるハズ。 ハズ、ハズ(^_^; 動かなかったらデバッグは自分でやってください(笑)
補足
さっそくのご回答ありがとうございます! ところで、これは*.cgi等のファイルにすればいいのでしょうか? そしてそのCGIをSSIで読み込めば更新日時が表示されるのでしょうか? 半分わかったようなわかんないような…ド素人ですみませんが、よろしくおねがいします(>x<;)
お礼
追記ありがとうございます! がんばってみたのですが、InternalServerErrorから抜け出せませんでした(汗 ですが、BlogのRDFファイルの更新状況を表示できるプログラムを見つけまして、なんとか質問の希望のことはできるようになりました! わざわざプログラム書いていただいたのに申し訳ありません、ありがとうございました。 また何かありましたらお願いします。