Я хочу проверить, существует ли сайт в этом коде cURL? - PullRequest
4 голосов
/ 01 июля 2011

Я использую этот код для получения ответа / результата от другого сервера и хочу узнать, как я могу проверить, жив ли сайт?

$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 ]

8 голосов
/ 01 июля 2011

Все, что вам действительно нужно сделать, - это запрос 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;
}
0 голосов
/ 27 марта 2013

вот проще

<?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;
?>
0 голосов
/ 01 июля 2011

Говори коротко и просто ...

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

Если $string равно null или empty, возможно, страница недоступна (или фактически ничего не выводит).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...