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.