Ich versuche, den folgenden Befehl im Hintergrund auszuführen mit supervisord
:
php /home/instacheeta/artisan queue:work --timeout=120
Nachdem ich den Supervisor-Dienst auf meinem Server installiert, seine Konfiguration definiert und gestartet habe, gibt es in der Datenbank keine Änderung, die darauf hinweist, dass der Supervisor die PHP-Anwendung ausführt.
Meine Supervisor-Konfiguration:
[program:instacheeta]
process_name=%(program_name)s_%(process_num)s
command=php /home/instacheeta/artisan queue:work --timeout=120
autostart=true
autorestart=true
numprocs=1
redirect_stderr=true
stdout_logfile=/home/instacheeta/worker.log
queue:work
wird nach jeder Ausführung ausgelöst cronjob
und arbeitet bis zum Ende.
cronjob
funktioniert einwandfrei; ich habe das in meiner Datenbank überprüft, um sicherzustellen, dass jede Minute neue Daten gespeichert werden. Leider scheint der Supervisor den definierten Befehl nicht auszuführen.
Ich erhalte keine Fehlermeldung worker.log
. Weitere Informationen zur Fehlerbehebung:
[root@host instacheeta]# ps aux|grep supervisor
root 3267 0.0 0.2 219784 12992 ? Ss 11:47 0:02 /usr/bin/python /usr/bin/supervisord
root 18279 0.0 0.0 112680 948 pts/0 S+ 14:38 0:00 grep --color=auto supervisor
Das Hinzufügen des Programms zu supervisorctl
: ist fehlgeschlagen.
[root@host instacheeta]# supervisorctl add instacheeta
ERROR: no such process/group: instacheeta
Supervisor-Status:
[root@host instacheeta]# supervisorctl status
[root@host instacheeta]#
Antwort1
Die Supervisor-Konfiguration muss neu geladen werden.
Hierfür gibt es zwei Methoden:
Starten Sie den
supervisor
Dienst mit demservice
Tool (service supervisor restart
) neu. Dadurch werden alle überwachten Prozesse aufgerufen. Da Sie derzeit jedoch keine derartigen Prozesse ausführen, stellt dies kein Problem dar.Fordern Sie den
supervisor
Daemon auf, seine Konfiguration dynamisch aus den Konfigurationsdateien neu zu laden. Führen Sie „Aus“supervisorctl reread
, gefolgt von „supervisorctl update
, um die Konfiguration zu aktualisieren“ aus. Sie können nunstart
das Programm starten oderstatus
seinen Status anzeigen.
supervisor
ist nicht cron
!
In Ihrer Frage geben Sie an:
cronjob
funktioniert einwandfrei; ich habe das in meiner Datenbank überprüft, um sicherzustellen, dass jede Minute neue Daten gespeichert werden. Leider scheint der Supervisor den definierten Befehl nicht auszuführen.
Beachten Sie, dass, wenn Sie zuvor einen Cronjob hatten, der den Befehl in regelmäßigen Abständen aufgerufen hat, supervisor
dies nicht ohne externe Intervention geschieht oder es sei denn, das Programm wird nach Abschluss der Arbeit beendet. Der Supervisor ist normalerweise dafür gedacht, Binärdateien aufzurufen, einen Dienst bereitzustellen und nach dem Start weiter ausgeführt zu werden.
Ich würde empfehlen, die Anwendung so zu ändern, dass sie einmal gestartet wird und über einen internen Zeitplan verfügt, nach dem sie alle erforderlichen Datenbankaktionen ausführt.