Ich habe ein Projekt, das Benachrichtigungen über WebSockets kontinuierlich senden muss. Es sollte eine Verbindung zu einem Gerät herstellen, das den Gesamtstatus im Zeichenfolgenformat zurückgibt. Das System verarbeitet sie und sendet dann Benachrichtigungen basierend auf verschiedenen Bedingungen.Laravel Schedular: Ausführen eines Befehls jede Sekunde
Da der Scheduler eine Aufgabe so früh wie eine Minute wiederholen kann, muss ich eine Möglichkeit finden, die Funktion jede Sekunde auszuführen.
Hier ist meine app/Console/Kernel.php
:
<?php
...
class Kernel extends ConsoleKernel
{
...
protected function schedule(Schedule $schedule)
{
$schedule->call(function(){
// connect to the device and process its response
})->everyMinute();
}
}
PS: Wenn Sie eine bessere Idee haben, um die Situation zu handhaben, geben Sie bitte Ihre Gedanken teilen.
Ein Dämon mit Hilfe einer Ereignisschleife, die jede Sekunde auslöst. Sie können eine Bibliothek wie [icicle] (https://icicle.io/) für diese Aufgabe und [supervisord] (http://supervisord.org/) als Manager verwenden, der den Prozess startet, wenn er unerwartet beendet wird . Dies mag als Overkill erscheinen, aber gewisse Dinge sehen einfach aus, bis Sie den Kern des Problems kennen. Wenn Sie kontinuierliche Updates benötigen, ist dies der richtige Weg. – Mjh