0

サーバーの状態(ON / OFF)を含む、サーバーのステータスを表示するために使用される単純なWebアプリを実行しています。サーバーのステータスを確認するために、関数「urlExists」を使用します。そのため、真の場合は、そのサーバーをオンライン、オフラインとして撮影しました。

サーバーをチェックするとき、それがオンラインの場合、関数は高速に実行されますが、チェックしているサーバーがオフラインの場合、次のサーバーをチェックするのに時間がかかりすぎます。だから私はこのように関数の実行時間を制限しようとしています:

...
set_time_limit(1);
$exists = false;
$exists = urlExists($url);
set_time_limit();
...

ただし、実行時間はset_time_limit()を使用しても同じです。set_time_limitがこの種のことを行うために使用されているかどうかはわかりませんが、私が設立したのはそれだけです。私がこれをどのように行うことができるかについてのアイデアはありますか?

前もって感謝します。

4

1 に答える 1

2

CURLを使用するこの関数を試してください。

function urlExists($url)
{
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_NOBODY, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);

    $exists = curl_exec($ch);
    curl_close($ch);

    // If exec returns boolean, it's false, therefore the server is down/url doesn't exist.
    return !is_bool($exists);
}

ご覧のとおり、CURLOPT_CONNECTTIMEOUTを使用して接続の時間制限を設定できます。このように、set_time_limit();を行う必要はありません。

于 2012-09-07T16:23:04.227 に答える