Как пинговать сервер с помощью Ajax в Laravel каждые 5 минут?

-2

У меня есть таблица 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 для выделения строк таблицы.

  • 0
    Я бы использовал функциональность Laravel's Queue. Добавляйте каждый IP-адрес в очередь каждые 5 минут и позволяйте работнику очереди обрабатывать их в фоновом режиме.
  • 0
    @ Джо, как я мог тогда выделить строки таблицы IP-адресов, которые мертвы / живы? Вот почему я хотел использовать Ajax. Я не уверен, как соединить систему очередей Laravel с Ajax
Показать ещё 2 комментария
Теги:
asynchronous
ping

1 ответ

-1

@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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню