2013-08-27 6 views
16

Создаю консольную команду в моем проекте. Я хочу, чтобы он исполнялся каждый день в 7 часов вечера. Как я могу сделать это в symfony2? Основной способ работы с php cron или symfony2 имеет что-то более удобное? БлагодаряCron Job в symfony2

ответ

25

Вы можете использовать основные хрон. На Debian или убунту вы можете сделать это:

crontab -e -u <username> 

Где имя пользователя это имя пользователя, который должен выполнить команду. В редакторе добавьте свою команду. Вот a good explanation, как должна выглядеть линия. Для команды Symfony2 что-то, как это должно работать:

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

Это будет выполнять your:command --option=123 каждую минуту.


Об одном окна машина, которую вы можете использовать команду ac. Он доступен для окон 7 по умолчанию. Read the docs here. Это должно выглядеть примерно так:

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

Убедитесь, что php является available globaly или путь к файлу php.exe правильно.

+0

Да, это путь. –

+0

My os is window7. Я не могу запустить команду crontab напрямую. Тогда что мне делать? Спасибо за ур ответ. @ byf-ferdy –

+0

Я обновил свой ответ. – ferdynator

2

Вы можете просто установить хроны в кронтабе, чтобы выполнить вашу команду Symfony,

например

0 19 * * */вар/WWW/Symfony/приложение/консоль YOUR_COMMAND

+0

Nop, вы должны запустить команду как пользователь www-data, иначе она может сломать кеш. –

0

Я думаю, что это хороший вопрос.

Я недавно проделал некоторую работу (используя компоненты ZF1, а не полный MVC), где все виды скрытых зависимостей существовали на заданиях cron для выполнения задач, и мне пришлось потратить много времени на добавление комментариев и создание документации, чтобы предупредить всех, кто идет за мной что эти кроны существовали, что они делали, где они хранились и так далее.

Он никогда не осенило меня, что бы компонент ZF только для этой цели, много зависимостей на контроллерах, хотя ...

К сожалению, я не отвечаю на ваш прямой вопрос, хотя.

FWIW

+0

Ваша ссылка устарела. – ferdynator

+0

Это ответ? – Trix

0

Обратите внимание на пользователя, которые используются для выполнения команды. Если вы запустили его как root, root мог бы владеть кешем Symfony, а затем разорвать HTTP-сайт вашего сайта (например, nginx будет работать как пользователь www-data).

С помощью Docker я использую phusion base image «setuser», чтобы заставить пользователя www-data.