2013-08-27 20 views
16

Tworzę polecenie konsoli w moim projekcie. Chcę, żeby był wykonywany codziennie o 19.00. Jak mogłem to zrobić w symfony2? Podstawowy sposób działania php cron lub symfony2 ma coś bardziej wygodnego? DziękiCron Job in symfony2

Odpowiedz

25

można wykorzystywać podstawową crona. Na debian lub ubuntu można to zrobić:

crontab -e -u <username> 

Gdzie nazwa to nazwa użytkownika, który powinien wykonać polecenie. W edytorze dodaj swoje polecenie. Oto a good explanation, jak linia powinna wyglądać. Przez coś komenda Symfony2 jak to powinno działać:

* * * * * /usr/bin/php /var/www/symfony2/app/console your:command --option=123 

ten będzie wykonywał your:command --option=123 każdą minutą.


W ciągu okien maszyna można użyć komendy ac. Domyślnie jest on dostępny dla domyślnego okna Windows 7. Read the docs here. Powinno to wyglądać mniej więcej tak:

AT 00:00 /every:M,T,W,Th,F "php /var/www/symfony2/app/console your:command --option=123" 

Upewnij się, że php jest available globaly lub ścieżka do pliku php.exe jest poprawna.

+0

Jep, to jest droga. –

+0

Moje os to okno7. Nie mogę bezpośrednio uruchomić polecenia crontab. Więc co powinienem zrobić? Dziękuję za odpowiedź. @ byf-ferdy –

+0

Zaktualizowałem moją odpowiedź. – ferdynator

2

można po prostu ustawić crona w crontab wykonać swoje polecenia symfony

przykład

0 19 * * */var/www/symfony/app/console YOUR_COMMAND

+0

Nop, musisz uruchomić polecenie jako użytkownik danych www, w przeciwnym razie może złamać pamięć podręczną. –

0

Myślę, że to dobre pytanie.

Niedawno wykonałem trochę pracy (używając komponentów ZF1, a nie pełnego MVC), gdzie na zleceniach crona istniały wszelkiego rodzaju ukryte zależności do wykonywania zadań, i musiałem spędzać dużo czasu dodając komentarze i tworząc dokumentację, aby ostrzec każdego, kto po mnie podąża. co te crony istniały, co robili, gdzie były przechowywane i tak dalej.

nigdy to mnie olśniło, że nie będzie składnikiem ZF właśnie w tym celu, wiele zależnościami na kontrolerach mimo ...

Niestety ja nie odpowiadając na bezpośrednie pytanie chociaż.

FWIW

+0

Twój link jest nieaktualny. – ferdynator

+0

Czy to jest odpowiedź? – Trix

0

Zwróć uwagę na użytkownika, którego używasz do wykonania polecenia. Jeśli uruchomisz go jako root, root może posiadać pamięć podręczną Symfony, a następnie złamać stronę HTTP (ponieważ nginx będzie działał na przykład jako użytkownik danych www).

Korzystając z Docker, używam metody "setuser" obrazu phusion, aby wymusić na użytkowniku dane www.