2013-08-27 29 views
16

Ich erstelle einen Konsolenbefehl in meinem Projekt. Ich möchte, dass es jeden Tag um 19 Uhr ausgeführt wird. Wie könnte ich es in Symfony2 tun? Ein einfacher php cron job way oder symfony2 hat etwas bequemeres? DankCron-Job in Symfony2

Antwort

25

Sie den Grund cron verwenden können. Auf debian oder ubuntu Sie dies tun können:

crontab -e -u <username> 

Wo Benutzername der Name des Benutzers, der den Befehl ausgeführt werden soll. Im Editor fügen Sie Ihren Befehl hinzu. Hier ist a good explanation wie die Linie aussehen soll. Für einen Symfony2 Befehl so etwas wie dies funktionieren soll:

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

Dies wird your:command --option=123 jede Minute ausführen.


Auf einem Fenster Maschine können Sie den ac Befehl verwenden. Es ist standardmäßig für Windows 7 verfügbar. Read the docs here. Es sollte wie folgt aussehen:

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

Stellen Sie sicher, dass php ist available globaly oder der Pfad zur php.exe Datei korrekt ist.

+0

Jep, das ist der Weg zu gehen. –

+0

Mein os ist window7. Ich kann den Befehl crontab nicht direkt ausführen. Was soll ich dann tun? Danke für deine Antwort. @ byf-ferdy –

+0

Ich habe meine Antwort aktualisiert. – ferdynator

2

Sie können einen cron in crontab nur stellen Sie Ihren symfony Befehl auszuführen,

z.B.

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

+0

Nop, Sie müssen den Befehl als www-Datenbenutzer ausführen, sonst könnte es den Cache zu brechen. –

0

Ich denke, das ist eine gute Frage.

Ich habe kürzlich einige Arbeit (mit ZF1 Komponenten, nicht volle MVC), wo alle Arten von versteckten Abhängigkeiten auf Cron-Jobs zur Ausführung von Aufgaben, und ich musste viel Zeit zum Hinzufügen von Kommentaren und Erstellen von Dokumentation, um jemanden warnen nach mir was diese Crons haben, was sie getan haben, wo sie gelagert wurden und so weiter.

Es dämmerte mir nie, dass es ...

Leider obwohl zu diesem Zweck viele Abhängigkeiten von Controllern nur eine ZF-Komponente würde ich aber nicht Ihre direkte Frage zu beantworten.

FWIW

+0

Ihr Link ist veraltet. – ferdynator

+0

Ist das eine Antwort? – Trix

0

Achten Sie auf den Benutzer, den Sie den Befehl verwenden. Wenn Sie es als root ausführen, könnte root Symfony-Cache besitzen und dann die HTTP-Seite Ihrer Site unterbrechen (weil nginx beispielsweise als www-data-Benutzer ausgeführt wird).

Mit Docker, benutze ich die "setuser" -Methode, um www-Daten Benutzer zu zwingen.