2013-08-14 3 views
12

Od czasu do czasu używam forever.js do szybkiego i brudnego wdrażania aplikacji Node.js typu CLI do środowisk produkcyjnych, w których nie chcę pełnego wdrożenia supervisord.Czy istnieje odpowiednik forever.js dla PHP, aby nieprzerwanie uruchamiać moje skrypty?

Zastanawiam się, czy istnieje odpowiednik dla PHP? W tej chwili mamy system przetwarzania kolejki, który pobiera komunikaty od SQS i przetwarza je synchronicznie w bazę danych (nie można tego zrobić asynchronicznie, ponieważ powoduje to różnego rodzaju nieprzyjemne problemy z blokowaniem wierszy w tym konkretnym przypadku użycia). W tym momencie uruchamia się w każdej chwili przy użyciu crona, ale często kończy się wcześnie i chcę, aby znów zaczął działać. Nie mogę uruchomić więcej niż jednego procesu naraz.

Wszelkie pomysły * na polecenia nix/oprogramowanie/bash są mile widziane.

+6

Dlaczego nie użyć pliku forever.js, aby uruchomić skrypt PHP? – quentinadam

+0

doh! nie myślał o tym, aby dać mu szansę. –

Odpowiedz

26

Wystarczy użyć forever z skryptu php (użyj -c argumentu pouczać zawsze używać php):

$ cat test.php 
<?php 
sleep(3); 
print("foobar\n"); 
exit; 
?> 
$ forever -c php test.php 
foobar 
error: Forever detected script was killed by signal: null 
error: Forever restarting script for 1 time 
foobar 
error: Forever detected script was killed by signal: null 
error: Forever restarting script for 2 time 
... 
+0

Stary, nie miałem pojęcia, że ​​możesz to zrobić. To naprawia mój problem. Dzięki! –

+2

święte bzdura naprawdę ?? to cudownie! – RedactedProfile

+0

To jest naprawdę szalone! gdzie mam przekazać darowiznę na projekt? !! –

2

Właśnie odkryliśmy to narzędzie supervisord i działa świetnie. Użyłem tego ratchet tutorial, aby uruchomić go w kilka minut!

Jeśli poprawnie pamiętam, skrypt nie uruchamia się ponownie po ponownym uruchomieniu serwera?

+0

Korzystamy z superwordu od około 8 miesięcy i jest świetny, w rzeczywistości używamy kombinacji z 'foreverd'. Ponieważ prawie wszystkie nasze rzeczy są przenoszone do okna dokowania, znaleźliśmy się za pomocą wbudowanych narzędzi demonstrujących dockera, np .: '-d --restart = always' –

Powiązane problemy