Почему cURL работает, когда я пингую IP с моего локального хоста, а не когда я использую его с 000webhostapp? - PullRequest
0 голосов
/ 20 февраля 2019

Я использую следующий код для проверки связи с IP-адресом (предоставлено https://www.saotn.org/php-curl-check-website-availability/)

<?php
/**
 * PHP/cURL function to check a web site status. If HTTP status is not 200 or 302, or
 * the requests takes longer than 10 seconds, the website is unreachable.
 * 
 * Follow me on Twitter: @HertogJanR
 * Send your donation through https://www.paypal.me/jreilink. Thanks!
 *
 * @param string $url URL that must be checked
 */
function url_test( $url ) {
  $timeout = 10;
  $ch = curl_init();
  curl_setopt ( $ch, CURLOPT_URL, $url );
  curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
  curl_setopt ( $ch, CURLOPT_TIMEOUT, $timeout );
  $http_respond = curl_exec($ch);
  $http_respond = trim( strip_tags( $http_respond ) );
  $http_code = curl_getinfo( $ch, CURLINFO_HTTP_CODE );
  echo $http_code;
  if ( ( $http_code == "200" ) || ( $http_code == "302" ) ) {
    return true;
  } else {
    // return $http_code;, possible too
    return false;
  }
  curl_close( $ch );
}

$website = "192.168.X.X";
if( !url_test( $website ) ) {
  echo $website ." is down!";
}
else { echo $website ." functions correctly."; }
?>

Где 192.168.XX - мой шлюз по умолчанию.

Когда я запускаю его через свойlocalhost, он говорит, что 192.168.XX работает правильно, однако, когда я запускаю его на своем веб-сайте 000webhostapp.com, он ждет 10 секунд и говорит, что 192.168.XX не работает! с кодом http 0. Любые идеи о том, что не так икак это исправить?

1 Ответ

0 голосов
/ 21 февраля 2019

Вы не отправляете эхо-запрос, вы выполняете cURL, поэтому проверяете, работает ли веб-сервер.

Он работает локально, поскольку интерфейс управления доступен из вашей внутренней сети.

Чтобы выполнить настоящий пинг, другие люди уже сделали за вас работу:

https://github.com/geerlingguy/Ping

$host = '106.x.x.x';
$ping = new Ping($host);
$latency = $ping->ping();
if ($latency !== false) {
    print 'Latency is ' . $latency . ' ms';
} else {
    print 'Host could not be reached.';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...