2011-02-01 10 views
3

私の開発マシン(どこかのサーバではない)で実行されているPHPスクリプトからインターネットに接続しているかどうかを確認する方法はありますか?PHPスクリプトでインターネットに接続されているかどうかを確認しますか?

wgetを使用してファイルセットをダウンロードするスクリプトを実行します(存在する場合もありません)。 wgetを接続せずにダウンロードしようとすると、wgetはファイルが存在しないと考えるので、wgetを呼び出す前に確認する必要があります。

+0

の可能重複[?インターネットに接続されている場合は、PHPスクリプトで決定する](http://stackoverflow.com/questions/4860365/determine -in-php-script-if-connected-to-internet) –

+0

@マークベイカー - ああ!はい、それは私のものです - 私は最初のものに投稿成功を得ていないし、しばらくしてからもう一度試してみました。できるなら合併してください! – Steve

答えて

6

google.comが到達可能である場合にだけチェック:

<?php 
if (!$sock = @fsockopen('www.google.com', 80, $num, $error, 5)) 
echo 'offline'; 
else 
echo 'OK'; 
?> 
+0

'$ num、$ error、5'パラメータは何ですか? –

1

いくつかのドメインでホスト名の検索をすばやく行うことができます。

<?php 
$ip = gethostbyname('www.google.com'); 
if($ip != 'www.google.com') { 
    //connected! 
} else { 
    //not connected 
} 
?> 
+0

ローカルネットワーク上のDNSサーバーは、外部への接続に失敗しても通常は機能します。 DNSクエリ応答がキャッシュされるので、オフライン状態の*時間*のIPアドレスが返されている可能性があります。 – Piskvor

+0

Googleはその単一ドメインの多くの回転IPアドレスを持っているため、最初にIPをキャッシュするのが良い考えであるかどうかはわかりません。 – Merijn

+0

さて、それはそれらのIPアドレスの*任意の*からのページを提供するでしょう(それらのうちの1つだけが一度にアクティブであるようではありません)ので、はい、良いアイデアです。 (そうでない場合、Googleは小さなTTLでDNS結果を返すように権威ネームサーバを自由に設定できます) – Piskvor