1

サイトが稼働しているかどうかを確認するスクリプトを作成しようとしています。すべて正常に動作しますが、サイトがサイトでない場合は、サイトが存在しないことを意味します。そして、php実行ロード時間が増加します。これを何とかしたい。サイトが存在しないかどうかを確認し、curl セッションを中断する方法は? これが私のスクリプトです:

<?php
$ch = curl_init('http://86.100.69.228/'); // e.g. for this will increase execution time because the site doesn't exists
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $status_code;
curl_close($ch);
?>
4

2 に答える 2

1

Comodo http://www.comodoなどの「SecuredDNS」などのサービスを使用している場合は、... CURLなどの完全なURLをチェックしていないため、サイトがダウンしているかどうかを確認するのは最善の方法ではない可能性があります。 .com / secure-dns /リクエストは確認のために自動的に転送されるため、すべてのWebサイトが返されるため、常にIPアドレスを使用してサイトをロードします検索92.242.144.10http://eample.com/abx.phpx20092.242.144.10

私のアドバイスは単にサーバーにpingを送信することです

function ping($host)
{
    exec(sprintf('ping -n 2 %s', escapeshellarg($host)), $res, $rval);
    return $rval === 0;
}

$result = ping("86.100.69.228");

ソケットを直接チェックしてください

function pingSocket($host, $port = 80, $timeout = 3) {
    $fsock = fsockopen ( $host, $port, $errno, $errstr, $timeout );
    if (! $fsock) {
        return FALSE;
    } else {
        return TRUE;
    }
}

$result = pingSocket ( "86.100.69.228" );

これはほとんどの場合うまく機能します

于 2012-05-05T18:06:55.793 に答える
1

で cURL 転送の CURLOPT_CONNECTTIMEOUT および CURLOPT_TIMEOUT オプションを設定することにより、タイムアウトを定義できますcurl_setopt。サイトがダウンしている場合、cURL は機能しなくなります。

于 2012-05-05T17:40:37.887 に答える