2016-05-17 4 views
3

Ich verwende Laravel Task Scheduling. Ich definiert eine benutzerdefinierte command und legen Sie es jede Minute laufen wie:Laravel Task Scheduling festgelegt, um jede Minute auszuführen, aber es nur einmal ausgeführt

$schedule->command('dailyk')->everyMinute(); 

Dann habe ich den folgenden Befehl verwendet, um die Aufgabe auszuführen:

php /var/www/stockhit/artisan schedule:run 1>> /dev/null 2>&1 

Ich log verwendet um zu überprüfen, dass meine benutzerdefinierten Befehl fortgesetzt Lauf. Es wird jedoch nicht jede Minute ausgeführt. Stattdessen lief es nur einmal.

Wie kann ich es jede Minute anstatt nur einmal laufen lassen?

Antwort

2

Siehe Task Scheduling:

Hier ist der einzige Cron Eintrag, den Sie zu Ihrem Server hinzufügen müssen:

* * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1

Dieser Cron den Laravel Befehl Scheduler jede Minute anrufen wird. Dann wertet Laravel Ihre geplanten Aufgaben aus und führt die fälligen Aufgaben aus.

Der Taskplaner von Laravel bleibt nicht im Speicher, er muss jede Minute ausgeführt werden. Es überprüft dann, welche Aufgaben in dieser Minute ausgeführt werden müssen und führt sie aus. Wenn Sie den Taskplaner mit PHP ausführen, wird er nur einmal ausgeführt. Er benötigt Cron, um ihn jede Minute auszuführen.

2

Sie müssen einen Cron-Job hinzufügen. Auf ubuntu verwenden Sie den Befehl

crontab -e 

Ihre Cron-Job-Datei zu öffnen, dann

* * * * * php /var/www/stockhit/artisan schedule:run 1>> /dev/null 2>&1 
+0

hallo user3563206 hinzufügen: Ich habe es arbeiten, indem sie manuell die secound Zeile in die Datei crontab -e offen hinzufügen, thx – alextre

Verwandte Themen