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, даже если сервер не работает(отключен)?



Когда сервер находится в сети, это будет работать идеально.

678   2  

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

    Ничего не найдено.