Я создаю консольную команду в своем проекте. Я хочу, чтобы он исполнялся каждый день в семь вечера. Как я мог сделать это в symfony2? Основной способ работы с php cron или symfony2 имеет что-то более удобное? благодаря
Вы можете использовать базовый cron . На debian или ubuntu вы можете сделать это:
crontab -e -u <username>
Где 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
.
Вы можете просто установить cron в crontab для выполнения команды symfony,
например
0 19 * * * / var / www / symfony / app / console YOUR_COMMAND
Я думаю, что это хороший вопрос.
Недавно я сделал некоторую работу (используя компоненты ZF1, а не полный MVC), где все виды скрытых зависимостей существовали на заданиях cron для выполнения задач, и мне приходилось тратить много времени на добавление комментариев и создание документации, чтобы предупредить всех, кто идет за мной, о существовании этих crons , что они сделали, где они были сохранены и так далее.
Мне никогда не приходило в голову, что для этой цели будет компонент ZF, много зависимостей от контроллеров, хотя …
Извините, но я не отвечаю на ваш прямой вопрос.
FWIW
Обратите внимание на пользователя, которого вы используете для выполнения команды. Если вы запустили его как root, root мог бы владеть кешем Symfony, а затем разорвать HTTP-сайт вашего сайта (например, nginx будет работать как пользователь www-data).
С Docker я использую метод «setuser» с базовым изображением phusion, чтобы заставить пользователя www-data.