Можно ли проверить, работает ли cronjob в приложении Symfony? - PullRequest
1 голос
/ 10 июля 2020

Я сейчас работаю над проектом, который насчитывает более 20 крон. Некоторые из них - довольно длительные процессы. Он был построен на Symfony 2.8, поэтому мы решили обновить его до 3.4 LTS.

После обновления мы заметили, что если есть текущее задание cron (длительный процесс), и мы sh вносим некоторые изменения в среду Prod мы получаем эту ошибку:

Fatal Compile Error: require(): Failed opening required '/.../cache/prod/

Оказывается, когда мы развертываем изменения, кешированный контейнер (в var / cache / prod / ContainerXXXXXX) изменил значение XXXXXX. Или, другими словами, мы очищаем кеш (во время развертывания), а затем он создает новый контейнер в каталоге кеша. Подробнее об этой проблеме: https://github.com/symfony/symfony/issues/25654.

Итак, мне пришла в голову идея добавить скрипт с while l oop (?), Который проверяет, есть ли запущенные crons, если не запустить развертывание.

Но вопрос в том, есть ли способ проверить это в текущей ситуации?

1 Ответ

1 голос
/ 10 июля 2020

Есть много способов добиться этого. Любой вид семафор (файл, запись в базе данных) для сохранения статуса «запущен» и для того, чтобы тот же процесс очищал его, когда он будет завершен.

Любое задание развертывания должно проверять значение этого семафора перед продолжением. Проще всего использовать простой плоский файл, поскольку во время развертывания у вас может не быть доступа к более сложным функциям, но чтение текстового файла должно быть легким, независимо от того, какой процесс развертывания вы используете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...