У меня есть база данных, где я сохранил все IP-адреса. Теперь я хочу знать, что эти IP-адреса подключены / нормальные или отключены. Я пытался:
$add = "example.com";
$result = checkdnsrr($add, "MX");
var_dump($result);
Его возвращение логическое true
или же false
, Но у меня есть IP-адрес, который не подключен DNS. Но как я могу узнать, что IP активен / нормален / подключен или отключен?
ДЛИННЫЙ ОПРОС ПЛОХО
Насколько я понял ваш вопрос, вы просто хотите проверить, подключен конкретный клиент или нет.
Вам нужно будет настроить работу cron в PHP с непрерывным циклом, который будет долго опрашиваться XHR (AJAX с Jquery и т. Д.), Устанавливая status = true
, Таким образом, когда пользователь отключается, XHR будет сломан и статус будет set = false
, Таким образом, вы можете проверить, подключен ли пользователь или нет. Тем не менее, обратите внимание, что Long Polling действительно ресурсоемкий и не ценится.
Я настоятельно рекомендую вам использовать идти с Node
а также Websockets
и т.п.
Я мог бы написать код для задания PHP Cron и решить вашу проблему, но я не ценю за это Long Polling + Cron Job.
если вы хотите проверить, работает ли веб-сайт, вы можете сделать это следующим образом:
$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');