[PHP-users 100] Re: リンク切れを調査する方法について

Toshikazu Yoshikawa php-users@php.gr.jp
Tue, 19 Jun 2001 00:39:37 +0900


吉川@アンカットです。
どなたもフォローしてないようなので。

> phpからURLのリンク切れを調査したく、下記コードにてまずは、
> gethostbyname()でドメインの有効性をチェックしたいのですが、
> ドメインが存在しない場合30秒以上応答が帰ってこない場合があります。
> すぐに応答が帰ってくるような良い方法はございますでしょうか?

gethostbyname()にはタイムアウト値を設定できないので、
素直にfsockopen()でタイムアウト値を設定して接続の可否を調べる
というのではだめなのでしょうか?
確かに、たまたま調べたときは該当サーバがダウンしていたということは
判別不可ですが。

ホスト名ではなく、ドメイン名の有効性をチェックするのなら、
whoisコマンドをexec()あたりで起動して、その応答を調べるというのではどうでしょう?

> 又、URLがSSLの場合にデッドリンクをチェックを行うと
> HTTP/1.1 400 Bad Request となってしまいます。
> URLが、SSLでもデッドリンクをチェックする方法はございますでしょうか?

これはHTTPでしゃべる前にSSLハンドシェイクなどの処理が必要になりますので、
そのまま443番ポートに接続するだけではだめです。
opensslをインストールされてるなら、以下のURLが参考になると思います。

http://www.modssl.org/docs/2.8/ssl_faq.html#ToC19

opensslコマンドをpopen()などで起動すればよろしいのではないかと。

---
unCut  Toshikazu Yoshikawa
mailto:toshi@uncut00.com