У меня есть сервер и создайте для него веб-интерфейс, если пользователь нажимает кнопку перезагрузки на странице, тогда пользователь перенаправляется на reboot.php
, где предполагается, что он будет показывать счетчик gif до сервер снова доступен, и сервер перезагружается через выполнение оболочки. Если сервер доступен, то мне нужно перенаправить на main.php
Показывать страницу ожидания во время перезагрузки сервера
Итак, я создал следующую функцию. Функция начинается с таймаута в 5 секунд, потому что в противном случае она мгновенно загрузится main.php
, потому что команда перезагрузки требует времени.
reboot.php
$ret = false;
test();
function test()
{
setTimeout
(
function()
{
$ret = ping("www.google.de");
if ($ret === false)
{
test();
}
else
{
window.location.href = "main.php";
}
},
3000
);
}
function ping(url)
{
$.ajax
(
{
url: url,
success: function(result)
{
alert('reply');
return true;
},
error: function(result)
{
alert('timeout/error');
return false;
}
}
);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-lg-6 col-lg-offset-3" id="mydiv">
<div class="mydiv_inhalt">
<h2>Rebooting...</h2>
<p>This can take about 2 minutes.</p>
<center>
<div class="waiting" id="waiting" style="margin-top:30px; margin-left: 0px;">
<center><img class="loading_table" src="http://www.securenet.com/sites/default/files/spinner.gif" alt="spinner gif"></center>
</div>
</center>
</div>
</div>
ajax.php
$cmd = filter_input(INPUT_POST, "cmd");
if (isset($cmd) && $cmd == "check_online_status")
{
echo "true";
}
В моей ajax.php
Я просто возвращаю «истину», если вызов был успешным. Однако моя логика не работает, кажется, что мой код только пытается сделать один звонок моему ajax.php
, а затем никогда не пытается снова, и я получаю net::ERR_CONNECTION_REFUSED
в консоли.
Я добавил много предупреждений в свой код, но они не выполняются, поэтому я думаю, что он не пытается позвонить ajax.php
во второй раз после получения net::ERR_CONNECTION_REFUSED
.
Моя единственная идея будет ждать достаточно времени, а затем перенаправить на main.php
, но это не является хорошим решением, потому что нужно везение, что, если время не было достаточно и т.д.
setTimeout (function() {setInterval (ping, 2000);}, 8000); сначала будет ждать 10 секунд, а затем ping сервер каждые 2 секунды. – diynevala
Ничего себе, это сработало. В заключение! Спасибо, сэр. – Black