Определить, находится ли IP в сети или нет в PHP? - PullRequest
1 голос
/ 24 июня 2011

У меня есть несколько IP-адресов (другие серверы, на которых размещены большие двоичные файлы) и их статический IP-адрес.

Когда пользователь нажимает на ссылку, я хочу пропинговать каждый сервер, пока он не найдет тот, который находится в сети, и перенаправить браузер на соответствующий URI.Если ни один из серверов не подключен к сети, должна появиться ошибка.

Ответы [ 6 ]

8 голосов
/ 24 июня 2011

посмотрите на это .... Пингуйте сайт и верните результат в PHP

function availableUrl($host, $port=80, $timeout=10) { 
  $fp = fSockOpen($host, $port, $errno, $errstr, $timeout); 
  return $fp!=false;
}

//Return "true" if the url is available, false if not.
echo availableUrl("www.google.com");
1 голос
/ 24 июня 2011

Вы можете сделать явную команду для командной строки с помощью функции PHP exec()

exec("ping server");

Получите результаты, а затем проанализируйте их как хотите.

$my_output = array();
exec("pwd", $my_output);

var_dump($my_output);
0 голосов
/ 27 июля 2017

Если вы хотите отобразить то, что вы выполняете, просто поместите это в переменную, а затем отобразите переменную. Имейте в виду, что если вы exec("ping -c 5 google.com"), вам нужно установить его следующим образом $output .= exec("ping -c 5 google.com");. Использование .= для установки переменной дает вам возможность установить более одной настройки в переменной. $output = null; $output = exec("pwd"); echo $output; Или вы можете использовать shell_exec("pwd"), это зависит. Многие люди будут критиковать мой способ написания кода. Я знаю - это не профессионал. Но это работает! :)

0 голосов
/ 24 июня 2011

Я использовал fsockopen () , чтобы проверить, работали ли службы, прослушивающие порты, а не только хост.

0 голосов
/ 24 июня 2011

Вы можете использовать библиотеку, такую ​​как , эту , чтобы выполнять запросы ping изнутри PHP.

shell_exec также будет работать, но оставит вам анализ вывода.

0 голосов
/ 24 июня 2011

Я не уверен, как это вопрос php, но в командной строке просто сделайте:

ping IP_ADDRESS
...