Laravel Befehle und Jobs

Ich Frage mich, was der Unterschied ist zwischen den verschiedenen Befehl-wie Klassen in Laravel 5.1. Soweit ich sagen kann, Laravel 5.1 hat die folgenden zur Verfügung:

  • Konsolen-Befehle (artisan make:console)
  • Befehle (artisan make:command)
    • Handler (artisan make::command --handler)
  • Arbeitsplätze (artisan make:job)

Ich komme gerade von 4.2 auf 5.1, also ich weiß nicht, was passiert ist zwischen 4.2 und 5.1, aber mir wurde gesagt, dass das mittlere (nur Befehle) sind im Grunde nicht wirklich, sollte nicht mehr verwendet werden - Sie sind aus, wenn die Warteschlange-in der Lage jobs wurde 'Befehle' in der 5.0, aber Laravel seit beschlossen, gegen diese, und Sie sind nur für die Kompatibilität. Allerdings bin ich nicht 100% auf diesen Punkt, so dass eine Klärung wäre sehr hilfreich.

Meinen speziellen use-case ist, ich möchte ein Ort, um eine eigenständige 'runnable' Aufgabe. Zum Beispiel, etwas, dass die Dateien entfernen, die älter als 5 Tage von einem gegebenen Verzeichnis (es könnte aber etwas tun).

Dies klingt zunächst wie eine Konsole mit dem Befehl - ich möchte in der Lage sein, um Sie auszuführen aus artisanfür einen start. Aber ich kann auch wollen, dass es auf einem Zeitplan (große, artisan schedule:run läuft console-Befehle). Aber ich kann auch wollen, um es auszuführen asynchron von code. Konsole-Befehle ausgeführt werden können synchron mit Artisan::call()aber für asynchrone, dieser ist (glaube ich), wo Warteschlangen kommen, und es hat plötzlich eine Arbeit ist.

Okay, so haben wir einen job. Wir können jetzt hinzufügen, dass es zu einer Warteschlange von code, aber wie wollen wir Sie umsetzen, wie ein Handwerker-Befehl (synchron)? Kann ich einfach ein dünne console-Befehl und fügen Sie die DispatchesJobs Eigenschaft (oder den code darin), und dann der Versand der job? Die Arbeit macht immer gehen Sie auf eine Warteschlange oder wir machen einen job bei synchron ausführen (und, im Idealfall, die Ausgabe in der Konsole Befehl?) Die gleiche Frage gilt für das ausführen auf einem Zeitplan - soll ich zum erstellen dieser Befehl console und fügen Sie, dass der scheduler, oder kann ich den scheduler-führen Sie den Auftrag direkt?

Schließlich haben wir 'Befehle', die nicht console-Befehle noch Aufträge. Wie ich schon sagte, die Leute sagen mir, dies sind nur Mitläufer, die aus einer Laravel 5.0-code ändern, das war (irgendwie) zurückgesetzt. Aber die artisan make Befehl noch vorhanden ist für Sie, so können Sie nicht sein dass tot. Auch, was ist der deal mit einem self-handling-Befehl (der Standard, kommt mit einem handle - Methode) und eine, die 'erfordert' eine handler-Klasse (run artisan make:command --handler)? Wie wollen Sie eigentlich machen diese ausführen? Manuell mit (new App\Command\SomeCommand)->handle(); oder (new App\handlers\SomeCommandHandler)->handle(new App\Command\SomeCommand) oder gibt es da eine versteckte system-weiß ich nicht (vielleicht kann Sie ausgelöst werden, Sie job/queue dispatcher)? Sie können auch erstellen 'in der Warteschlange' Befehle artisan make::command --queuedalso wie unterscheiden sich diese?

Ich denke, meine Frage läuft darauf hinaus, die folgenden:

  • Was ist die richtige (semantische und funktionelle) Unterschied zwischen den allen?
  • Was ist der richtige Weg, um das "ausführen"?
  • Welche ist am besten für meine Zwecke einer allgemein-standalone-bit-code, der ausgeführt werden muss, in welcher Weise auch immer-ich fühle mich geeignet?

Fand ich Informationen in der Dokumentation nach, wie man Warteschlangen und erstellen von console-Befehlen, aber nichts auf genau, Wann Sie zu verwenden oder wirklich alles auf Kommando-Klassen und Handler.


Verwandten, aber nicht genau das gleiche (auch unbeantwortet): Laravel 5.1 Befehle und Aufträge

InformationsquelleAutor der Frage alexrussell | 2015-08-19

Schreibe einen Kommentar