Czy muszę ponownie uruchomić proces nadzorcy po wprowadzeniu zmian w pliku Laravel?


Używam Supervisord do monitorowania kolejki w Laravel 4.2. To jest plik konfiguracyjny mojego przełożonego:
[program:webhooks]
command=php artisan queue:work --daemon --queue=webhooks --tries=3 --sleep=5
directory=/var/www/html/app
stdout_logfile=/var/www/html/app/app/storage/logs/webhooks_supervisord.log
redirect_stderr=true
autostart=true
autorestart=true

Jak widzę w dokumentach Laravel:

Pracownicy kolejki demona nie restartują struktury przed przetwarzaniem
każde zadanie.

Z tego co wiem, oznacza to, że jeśli dokonam zmiany w jednym z plików frameworka, ta zmiana nie zostanie odzwierciedlona w Queue Daemon. Na przykład, jeśli jeden z moich plików mówi
echo 1;
i zmienię go na
echo 2;
, wersja frameworka używana przez kolejkę będzie nadal zawierała
echo 1
do momentu ponownego uruchomienia kolejki. Aby te nowe zmiany zaczęły obowiązywać, muszę uruchomić:
sudo supervisorctl
supervisor> stop webhooks
supervisor> start webhooks

Czy mam rację rozumiejąc, że jest to konieczne? A może jest inny sposób, aby sobie z tym poradzić, aby nowe zmiany w plikach były pobierane bez ponownego uruchamiania kolejki?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ponieważ demon roboczy kolejki pobiera plik tylko raz, należy go zrestartować przed wykryciem jakichkolwiek zmian w kodzie.

Tutaj
https://stackoverflow.com/a/9310434/3784306
dobry przykład tego, jak zarządzać wieloma powiązanymi kolejkami pracy, gdy projekt staje się zbyt duży, aby ręcznie ponownie uruchomić każdego pracownika.
Alternatywnie możesz użyć

słuchacz kolejki
http://laravel.com/docs/5.0/qu ... tener
przez
php artisan queue: Listen
. Ta opcja wiąże się ze znacznym wzrostem obciążenia procesora ze względu na fakt, że cała struktura jest ładowana od zera po każdym zadaniu.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ja też miałem ten problem. Z jakiegoś powodu uruchomienie
$ php artisan queue: listen
lub
$ php artisan queue: work
zawsze powodowało przypadkowe zatrzymanie kolejki w połowie zadań, nawet jeśli nie zawiodły . Skonfigurowałem Supervisora, ale za każdym razem, gdy wprowadzałem zmianę, występował problem z kolejką, na której była uruchomiona nieaktualna wersja bazy kodu.
Jeśli używasz Sublime Text jako edytora, możesz dodać podpórkę, aby ponownie uruchomić Supervisor za każdym razem, gdy wprowadzasz zmiany w projekcie Laravel. Przejdź do sekcji projekt & > zmienić projekt.
{
"folders":
[
{
"path": "."
},
{
"path": "app/Http/Controllers"
},
{
"path": "resources/views"
},
{
"path": "database/migrations"
}
],
"on_pre_save_language":
[
{
"command": "supervisorctl restart webhooks"
}
]

}
Na razie w porządku. Zaktualizuję odpowiedź na wypadek, gdyby coś poszło nie tak.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie potrzebujesz tego! Po prostu wykonaj następujące czynności, a przełożony automatycznie uruchomi się ponownie ze świeżym kodem.
$> CD/your/project/folder
$> php artisan queue:restart

Powodem jest to, że polecenie rzemieślnika zatrzyma kolejkę, a przełożony wymusi jej ponowne uruchomienie, po ustawieniu w konfiguracji opcji
autorestart = true
.
Aby to potwierdzić, po prostu wykonaj poniższe czynności i zobacz wynik
uptime
:
$> sudo supervisorctl status

--
Alternatywnie możesz wykonać następujące czynności, jeśli dokonałeś zmian w konfiguracji programu nadzorującego:
$> sudo supervisorctl update

Spowoduje to ponowne załadowanie konfiguracji, dodanie/usunięcie w razie potrzeby i ponowne uruchomienie
programów

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się