Hy Jungs, ich habe das Kapitel namens Planung von Laravels Dokumentation gelesen, aber Ich habe nicht viele Informationen gefunden. Ich versuche, die Ausführung einer Aufgabe so anzupassen, dass sie alle 30 Sekunden ausgeführt wird. Gibt es eine Lösung? Sorry für mein Englisch und einen schönen Tag.kann mit Laravel jede x Sekunde eine Aufgabe ausführen?
Antwort
ich dieses Zitat auf der Laravel docs haben ...
In der Vergangenheit haben die Entwickler einen Cron-Eintrag erzeugt für jede Aufgabe, die sie planen müssen. Dies ist jedoch Kopfschmerzen. Ihr Aufgabenplan befindet sich nicht mehr in der Quellcodeverwaltung, und Sie müssen SSH in Ihren Server einfügen, um die Cron-Einträge hinzuzufügen. Mit dem Laravel Command Scheduler können Sie Ihren Befehlsplan in Laravel selbst flüssig und expressiv definieren, und auf Ihrem Server wird nur ein einzelner Cron-Eintrag benötigt.
Sie müssen noch Cron verwenden, um Ihre Aufgaben zu laufen, aber die Laravel der Scheduling verwenden Sie nur einen Job auf dem Cron gesetzt und steuern alle Arbeitsplätze der Anwendung durch den Task-Scheduling.
Beispiel:
Set diese cron auf dem Server:
* * * * * php /path/to/artisan schedule:run
Es ist im Begriff, die Laravel Befehl Scheduler jede Minute anrufen und dann Laravel wertet Ihre geplanten Aufgaben und die Aufgaben ausführt, die sind fällig.
dann auf Ihre Datei app/Console/Kernel.php Sie alle Ihre Aufgaben als Code unten konfigurieren:
$schedule->call(function() {
DB::table('recent_users')->delete();
})->daily();
$schedule->command('inspire')->hourly();
standardmäßig CRON Aufgaben geplant sind in Mindestdauer 1 Minute, aber es gibt Abhilfe für Ihr Problem.
In Console Kernel sollten Sie so etwas tun:
/**
* Define the application's command schedule.
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('your_command:run',['--delay'=> 0])->everyMinute();
$schedule->command('your_command:run',['--delay'=> 30])->everyMinute();
}
In Command Klasse Sie Signatur definieren, sollten die nimmt Parameter können.
protected $signature = 'your_command:run
{--delay= : Number of seconds to delay command}';
In Griff Methode sollten Sie Wert dieses Parameters lesen und schlafen diese Aufgabe für bestimmte Anzahl von zweiten sleep
Funktion in bauen.
/** In handle method **/
sleep(intval($this->option('delay')));
Diese Lösung wird Ihre Aufgabe alle 30 Sekunden ausführen, Sie können die Anzahl der Aufgaben mit unterschiedlicher Verzögerung multiplizieren. In diesem Fall müssen Sie planen Methode in der Kernel-Klasse bearbeiten.
- 1. Laravel Schedular: Ausführen eines Befehls jede Sekunde
- 2. Jede Möglichkeit, CompositionTarget.Rendering zu erzwingen X-Frames pro Sekunde ausführen?
- 3. Rufen Sie eine Funktion jede x Sekunde in requestAnimationFrame
- 4. Update Chat Jede Sekunde
- 5. Ausführen von Code jede Sekunde mithilfe von System.currentTimeMillis()
- 6. Ändern Hintergrundbilder jede Sekunde jQuery Javascript
- 7. Drucken Array-Element jede Sekunde
- 8. Python läuft nicht jede Sekunde
- 9. eine Aufgabe zweimal täglich mit Laravel Planung
- 10. Wie führe ich jede Sekunde eine Funktion aus?
- 11. Wie man ein Wort jede Sekunde druckt?
- 12. Wie wird eine WPF-Bindungsaktualisierung jede Sekunde durchgeführt?
- 13. Wie kann ich jede Sekunde etwas tun? [LibGDX]
- 14. Dauer # toMinutes in Runnable jede Sekunde
- 15. Wie X X Sekunde mit axWindowsMediaPlayer in C springen #
- 16. SyncAdapter - Wie man jede Sekunde periodisch synchronisiert
- 17. Eine Aufgabe ausführen, wenn Internetverbindung verfügbar ist
- 18. Laravel Illuminate \ Contracts \ Http \ Kernel-Antwort in index.php dauert eine Sekunde zum Ausführen
- 19. Wie kann ich den Code einmal pro Sekunde ausführen?
- 20. Einfache Wecker und Zeit überprüft jede Sekunde
- 21. Wie kann ich eine reguläre Aufgabe mithilfe von flask ausführen?
- 22. Push-Benachrichtigung für jede Sekunde wiederholen
- 23. Node.js PM2 startet fast jede Sekunde neu
- 24. Wie genau planen Sie eine Aufgabe mit einem festen Zinssatz von mehreren pro Sekunde
- 25. Wie kann Ruby alle 10 Minuten eine Aufgabe ausführen?
- 26. Kann eine Grunt-Aufgabe andere Grunt-Aufgaben ausführen?
- 27. Wetterstation Datenbank-Design, erhalten jede Sekunde Sensordaten
- 28. Android: Wie API-Daten jede Sekunde aktualisieren
- 29. Ausführen einer Aufgabe von meiner benutzerdefinierten Aufgabe?
- 30. Verzögerung dann ausführen Aufgabe
Mit dieser Lösung können Sie jede Minute und nicht alle X Sekunden eine Aufgabe ausführen. Dies liegt daran, dass das Cron-Ausführungsintervall einmal pro Minute ist, also können Sie keine Intervalle niedriger als das haben! – Atrakeur