У меня есть таблица HTML, заполненная IP-адресами сервера, и я хочу их каждые 5 минут пингуть, чтобы проверить, жив ли сервер (и в конечном итоге выделять строки таблицы, зависящие, если сервер мертв/жив).
В настоящее время я использую Ajax с 5-минутным интервалом, который вызывает метод в моем контроллере:
var checkSims = function() {
$.ajax({
type: "GET",
url: '/checkSimStatus',
success: function(msg) {
onlineSims = msg['online'];
offlineSims = msg['offline'];
console.log(onlineSims);
console.log(offlineSims);
},
error: function() {
console.log('false');
}
});
}
var interval = 1000 * 60 * 1; // where X is your every X minutes
setInterval(checkSims, interval);
Однако это не является асинхронным, и пока этот метод контроллера проверяет IP-адреса, веб-сервер не может обслуживать запросы.
Я читал о системе очереди Laravel, но я не уверен, что это подойдет мне, поскольку мне нужна одна конкретная страница для запуска задания, и мне нужно будет использовать JS для выделения строк таблицы.
@f7n, если вы сделали это с помощью ajax, как это будет работать, если эта страница, на которой HTML-таблица с IP-адресом не открывается в браузере? Я думаю, вы должны использовать cron job
на сервере. Кроме того, если вы используете VPS (Linux) или что-то еще, вы можете написать простой код с помощью сценария оболочки bash и запустить его на демоне. Кроме того, вы можете создать простой код, как показано ниже, создать PHP скрипт
где он будет анализировать (захватывать) страницу с HTML-таблицей IP-адресов и сервером ping.
#!/bin/bash
echo "Press [CTRL+C] to stop.."
while true
do
php parse_and_ping.php
sleep 300
done
sleep 300
означает, он будет работать каждые 5 минут. Просто сохраните файл .sh
(run_shell.sh) и запустите его на терминале или на демоне сервера Linux.