PHP-проверяет, находится ли сервер в автономном режиме и не показывает ли предупреждение в XAMPP
В данный момент я проверяю, работает ли сервер(в данном случае 192.168.1.135) с этим кодом php:
<?php
$fp = fsockopen("192.168.1.135", 443, $errno, $errstr, 0.4); //(line 47)
if (!$fp) {
echo "OFFLINE";
}
else{
echo "ONLINE";
}
?>
У меня есть этот код на моем собственном сервере 192.168.1.130 с использованием XAMPP (в локальной сети, Конечно)
Итак, если этот сервер находится в автономном режиме, вывод будет:
Warning: fsockopen(): in C:xampphtdocsindex.php on line 47
OFFLINE
Он должен быть просто "оффлайн". Как показать просто оффлайн без предупреждения?
Я думаю, что XAMPP пришлет мне предупреждение, когда сервер не работает. но как мне поступить, чтобы не показать предупреждения? Я не нахожу подходящей обстановки для этого. это в XAMPP, кто-нибудь знает?
Если нет, то как мне исправить строку 47, даже если сервер не работает(отключен)?
Когда сервер находится в сети, это будет работать идеально.
2 ответов:
Используйте оператор молчания
@чтобы подавить предупреждение:$fp = @fsockopen("192.168.1.135", 443, $errno, $errstr, 0.4); //(line 47)
Примечание: как вы видите, оператор@подавил предупреждение, как вы и просили. Но будьте осторожны. Сообщение, например "нет маршрута к хосту", также будет подавлено. (В основном, если ваше сетевое соединение недоступно), поэтому вы не можете быть уверены, что сервер находится в автономном режиме. Вы должны дополнительно вывести$errmsg, еслиfsockopen()не видит причину.
Попробуйте этот скрипт
$fp = fsockopen("192.168.1.135", 443, $errno, $errstr, 0.4); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET / HTTP/1.1\r\n"; $out .= "Host: 192.168.1.135\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { echo fgets($fp, 128); } fclose($fp); }
Comments