我想检查一下这个cURL代码中的网站是否还活着?

时间:2011-06-30 22:24:03

标签: php curl

我使用此代码从其他服务器获取响应/结果,我想知道如何检查该网站是否还活着?

$ch = curl_init('http://domain.com/curl.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
if (!$result)
// it will execute some codes if there is no result echoed from curl.php

3 个答案:

答案 0 :(得分:8)

您真正需要做的就是HEAD请求,看看重定向后是否收到200 OK消息。 您无需为此提出全身请求。事实上,您根本就不应该这样做。

function check_alive($url, $timeout = 10) {
  $ch = curl_init($url);

  // Set request options
  curl_setopt_array($ch, array(
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_NOBODY => true,
    CURLOPT_TIMEOUT => $timeout,
    CURLOPT_USERAGENT => "page-check/1.0" 
  ));

  // Execute request
  curl_exec($ch);

  // Check if an error occurred
  if(curl_errno($ch)) {
    curl_close($ch);
    return false;
  }

  // Get HTTP response code
  $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  curl_close($ch);

  // Page is alive if 200 OK is received
  return $code === 200;
}

答案 1 :(得分:0)

这是更简单的一个

<?php
$yourUR="http://sitez.com";

$handles = curl_init($yourUR);
curl_setopt($handles, CURLOPT_NOBODY, true);
curl_exec($handles);
$resultat = curl_getinfo($handles, CURLINFO_HTTP_CODE);

echo $resultat;
?>

答案 2 :(得分:-3)

保持简短......

$string = @file_get_contents('http://domain.com/curl.php');

如果$stringnullempty,则该网页可能无法访问(或实际上无法输出任何内容)。