Довольно плохо знаком со сценариями на стороне сервера в php здесь, так что, пожалуйста, не стесняйтесь:
Вопрос:
- Как бы я реализовал прерывистый вызов?
Для вопроса 1:
У меня есть вещи для работы в терминах Online
/ Offline
, однако мне нужно реализовать вызов Intermittent
, при котором, если 2-е устройство не работает, на странице будет отображаться статус «Прерывистый» глобально. для основного устройства, а также показывает, что второе устройство находится в автономном режиме, но я не совсем уверен, как это сделать ...
Вот рабочий онлайн / офлайн скрипт, но нет прерывистого вызова ниже ...
// CHECK CONNECTIVITY
class CheckDevice {
// CHECK END USERS OS (Linux or Windows)
public function myOS(){
if (strtoupper(substr(PHP_OS, 0, 3)) === (chr(87).chr(73).chr(78)))
return true;
return false;
}
public function ping($device_ip){
if ($this->myOS()){
if (!exec("ping -n 2 -w 1 ".$device_ip." 2>NUL > NUL && (echo 0) || (echo 1)"))
return true;
} else {
if (!exec("ping -q -c2 ".$device_ip." >/dev/null 2>&1 ; echo $?"))
return true;
}
return false;
}
}
// IP of Device
$device_ip = 'xxx.xxx.xxx.xxx';
// DEVICE CHECK
if ((new CheckDevice())->ping($device_ip))
echo '<div class="status_wrapper">
<div class="status_oo_wrapper">
<div class="pic_bg"></div>
</div>
<p><b>DEVICE NAME</b></p>
<div class="status_online">Online</div>
<p class="span">No issues or outages to report...</p>';
else
echo '<div class="status_wrapper">
<div class="status_oo_wrapper">
<div class="pic_bg"></div>
</div>
<p><b>DEVICE NAME</b></p>
<div class="status_offline">Offline</div>
<div class="status_offline_extended"></div>
<p class="span">Please be patient...</p>';
Сценарий с более чем 1 устройством, на котором я хотел бы иметь прерывистый вызов, тогда как если устройство 2 выходит из строя (или находится в автономном режиме), то устройство 1 изменит свое состояние на прерывистое:
// CHECK CONNECTIVITY
class CheckDevice {
// CHECK END USERS OS (Linux or Windows)
public function myOS(){
if (strtoupper(substr(PHP_OS, 0, 3)) === (chr(87).chr(73).chr(78)))
return true;
return false;
}
public function ping($device_ip){
if ($this->myOS()){
if (!exec("ping -n 2 -w 1 ".$device_ip." 2>NUL > NUL && (echo 0) || (echo 1)"))
return true;
} else {
if (!exec("ping -q -c2 ".$device_ip." >/dev/null 2>&1 ; echo $?"))
return true;
}
return false;
}
}
// CHECK CONNECTIVITY
class CheckDevice2 {
// CHECK END USERS OS (Linux or Windows)
public function myOS(){
if (strtoupper(substr(PHP_OS, 0, 3)) === (chr(87).chr(73).chr(78)))
return true;
return false;
}
public function ping($device2_ip){
if ($this->myOS()){
if (!exec("ping -n 2 -w 1 ".$device2_ip." 2>NUL > NUL && (echo 0) || (echo 1)"))
return true;
} else {
if (!exec("ping -q -c2 ".$device2_ip." >/dev/null 2>&1 ; echo $?"))
return true;
}
return false;
}
}
// IP of Device
$device_ip = 'xxx.xxx.xxx.xxx';
$device2_ip = 'xxx.xxx.xxx.xxx';
// DEVICE CHECK
if ((new CheckDevice())->ping($device_ip))
echo '<div class="status_wrapper">
<div class="status_oo_wrapper">
<div class="pic_bg"></div>
</div>
<p><b>DEVICE NAME</b></p>
<div class="status_online">Online</div>
<p class="span">No issues or outages to report...</p>';
else
echo '<div class="status_wrapper">
<div class="status_oo_wrapper">
<div class="pic_bg"></div>
</div>
<p><b>DEVICE NAME</b></p>
<div class="status_offline">Offline</div>
<div class="status_offline_extended"></div>
<p class="span">Please be patient...</p>';
// DEVICE2 CHECK
if ((new CheckDevice2())->ping($device2_ip))
echo '<div class="status_wrapper">
<div class="status_oo_wrapper">
<div class="pic_bg"></div>
</div>
<p><b>DEVICE2 NAME</b></p>
<div class="status_online">Online</div>
<p class="span">No issues or outages to report...</p>';
else
echo '<div class="status_wrapper">
<div class="status_oo_wrapper">
<div class="pic_bg"></div>
</div>
<p><b>DEVICE2 NAME</b></p>
<div class="status_offline">Offline</div>
<div class="status_offline_extended"></div>
<p class="span">Please be patient...</p>';