2017-05-10 1 views
-1

Ich habe eine HTML-Tabelle voller Server-IP-Adressen, und ich möchte sie alle 5 Minuten ping, um zu überprüfen, ob der Server lebt (und schließlich Tabellenzeilen abhebt abhängig davon, ob der Server tot/lebendig ist).Wie pinge ich einen Server mit Ajax in Laravel alle 5 Minuten?

Derzeit Ajax Ich verwende mit einem 5-Minuten-Intervall, das ein Verfahren in meinem Controller ruft:

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); 

Dies ist jedoch nicht asynchron und während dieser Controller-Methode ist, um die IP-Adressen der Webserver Pingen kann keine Anfragen dienen .

Ich habe über Laravels Warteschlangensystem gelesen, aber ich bin mir nicht sicher, dass dies mir passen würde, da ich eine bestimmte Seite zum Auslösen des Jobs benötige und JS zum Hervorheben von Tabellenzeilen verwenden müsste.

+0

Ich würde Laravel Queue-Funktionalität verwenden. Fügen Sie alle 5 Minuten jede IP zur Warteschlange hinzu und lassen Sie sie von der Warteschlangen-Workstation im Hintergrund verarbeiten. – Joe

+0

@Joe Wie könnte ich dann die Tabellenzeilen der IPs markieren, die tot/lebendig sind? Deshalb wollte ich Ajax benutzen. Ich bin nicht sicher, wie man Laravels Warteschlangensystem mit Ajax verbindet – f7n

+1

Das klingt nicht richtig. Es gibt keine Beschränkung auf eine einzige Anfrage, die zu einem Zeitpunkt ausgeführt wird, es sei denn, Sie verwenden den integrierten PHP-Server oder einen schlecht konfigurierten Webserver. – apokryfos

Antwort

-1

@ f7n Wenn Sie es mit Ajax getan haben, wie funktioniert es, wenn die Seite HTML-Tabelle mit IP-Adresse nicht in einem Browser geöffnet ist? Ich denke, Sie müssen cron job auf einem Server verwenden. Wenn Sie VPS (Linux) oder etwas anderes verwenden, können Sie auch einfachen Code mit bash shell script schreiben und auf dem Daemon ausführen. Außerdem können Sie einfachen Code wie unten erstellen, erstellen php script, wo es Seite mit HTML-Tabelle von IP-Adressen und Ping-Server analysieren (packen).

#!/bin/bash 

echo "Press [CTRL+C] to stop.." 

while true 
    do 
    php parse_and_ping.php 
    sleep 300 
done 

sleep 300 ist meine, es wird alle 5 Minuten arbeiten. Speichern Sie es einfach auf .sh Datei (run_shell.sh) und führen Sie es auf einem Terminal oder auf dem Daemon des Linux-Servers.