2013-08-27 18 views
16

Creo un comando console nel mio progetto. Voglio che venga eseguito ogni giorno alle 19:00 Come potrei farlo in symfony2? Un modo base di lavoro di php cron o symfony2 ha qualcosa di più conveniente? GrazieCron Job in symfony2

risposta

25

È possibile utilizzare la base cron. Su debian o ubuntu si può fare questo:

crontab -e -u <username> 

Dove nome utente è il nome dell'utente che deve eseguire il comando. Nell'editor aggiungi il tuo comando. Ecco a good explanation come dovrebbe apparire la linea. Per un comando di Symfony2 qualcosa come questo dovrebbe funzionare:

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

Questo eseguirà your:command --option=123 ogni minuto.


Su un finestre macchina è possibile utilizzare il comando ac. È disponibile per windows 7 per impostazione predefinita. Read the docs here. Esso dovrebbe essere simile a questo:

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

Assicurarsi che php è available globaly o il percorso del file php.exe è corretto.

+0

Jep, questa è la strada da percorrere. –

+0

Il mio sistema operativo è window7. Non riesco a eseguire direttamente il comando crontab. Quindi cosa dovrei fare? Grazie per la tua risposta. @ byf-ferdy –

+0

Ho aggiornato la mia risposta. – ferdynator

2

Si può solo impostare un cron in crontab per eseguire il comando di symfony,

esempio

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

+0

Nop, è necessario eseguire il comando come utente di dati www, altrimenti potrebbe interrompere la cache. –

0

Penso che questa sia una buona domanda.

Recentemente ho fatto un po 'di lavoro (usando i componenti ZF1, non MVC completo) dove esistevano tutti i tipi di dipendenze nascoste nei lavori cron per svolgere attività, e dovevo passare molto tempo ad aggiungere commenti e creare documentazione per avvisare chiunque venisse dopo di me quello che questi crons esistevano, quello che facevano, dove erano immagazzinati e così via.

Non è mai venuto in mente che ci sarebbe stata una componente ZF solo a tal fine, un sacco di dipendenze da controllori anche se ...

Mi dispiace non sto rispondendo alla tua domanda diretta però.

FWIW

+0

Il tuo link non è aggiornato. – ferdynator

+0

Questa è una risposta? – Trix

0

Prestare attenzione per l'utente che si utilizza per eseguire il comando. Se lo esegui come root, root potrebbe possedere la cache di Symfony e quindi violare il lato HTTP del tuo sito (perché nginx verrà eseguito come utente www-data, ad esempio).

Con Docker, sto usando il metodo "setuser" dell'immagine di base di fusione per forzare l'utente di www-data.