Cron Job в symfony2

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

Ответы

Ответ 1

Вы можете использовать базовый cron. На debian или ubuntu вы можете сделать это:

crontab -e -u <username>

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

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

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


На машине Windows вы можете использовать команду ac. Он доступен для Windows 7 по умолчанию. Прочитайте здесь документы. Он должен выглядеть примерно так:

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

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

Ответ 2

Вы можете просто установить cron в crontab для выполнения команды symfony,

например.

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

Ответ 3

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

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

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

Извините, я не отвечаю на ваш прямой вопрос.

FWIW

Ответ 4

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

С Docker я использую метод setuser для базового образа phusion для принудительного использования пользователя www-data.