Как я знаю, что IP подключен / нормальный или отключен от локальной сети в PHP?

У меня есть база данных, где я сохранил все IP-адреса. Теперь я хочу знать, что эти IP-адреса подключены / нормальные или отключены. Я пытался:

$add     = "example.com";
$result = checkdnsrr($add, "MX");
var_dump($result);

Его возвращение логическое true или же false, Но у меня есть IP-адрес, который не подключен DNS. Но как я могу узнать, что IP активен / нормален / подключен или отключен?

-2

Решение

ДЛИННЫЙ ОПРОС ПЛОХО

Насколько я понял ваш вопрос, вы просто хотите проверить, подключен конкретный клиент или нет.

Вам нужно будет настроить работу cron в PHP с непрерывным циклом, который будет долго опрашиваться XHR (AJAX с Jquery и т. Д.), Устанавливая status = true, Таким образом, когда пользователь отключается, XHR будет сломан и статус будет set = false, Таким образом, вы можете проверить, подключен ли пользователь или нет. Тем не менее, обратите внимание, что Long Polling действительно ресурсоемкий и не ценится.

Я настоятельно рекомендую вам использовать идти с Node а также Websockets и т.п.

Я мог бы написать код для задания PHP Cron и решить вашу проблему, но я не ценю за это Long Polling + Cron Job.

1

Другие решения

если вы хотите проверить, работает ли веб-сайт, вы можете сделать это следующим образом:

$add     = "example.com";
$result = false;
if($fp = fsockopen($add, 80, $errno, $errstr, 10)){
fclose($fp);
$result = true;
}
var_dump($result);

// редактировать: так вы хотите знать, присутствует ли IP в вашей локальной сети? если так, вы можете использовать ping как:

function ping($host, $timeout = 1) {
/* ICMP ping packet with a pre-calculated checksum */
$package = "\x08\x00\x7d\x4b\x00\x00\x00\x00PingHost";
$socket  = socket_create(AF_INET, SOCK_RAW, 1);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
socket_connect($socket, $host, null);

$ts = microtime(true);
socket_send($socket, $package, strLen($package), 0);
if (socket_read($socket, 255))
$result = microtime(true) - $ts;
else    $result = false;
socket_close($socket);

return $result;
}

$present = ping('192.168.0.100');
0

По вопросам рекламы [email protected]