Какими инструментами делать синхронное выполнение команд symfony по расписанию?
Доброго всем дня!
У меня есть таблица с двумя полями "Команда" ,"время исполнения".
"Время исполнения" задано в таком формате */10 * * * * (т. е. каждые 10 минут, как в кроне)
Ранее я сделала через крон, но крон обеспечивает асинхронное выполнение команд, а мне нужно синхронное, то есть СТРОГО после основной команды, должны запускаться остальные.( у остальных время исполнения может быть каждые пять минут, каждый час, но они должны запускаться строго после основной команды). Иными словами основная команда выполнилась, нужно сделать проверку, подошли ли к исполнению выполнение других команд?
Вопрос , какими инструментами можно это реализовать? можно ли с помощью rabbitMQ?
Нет, крон просто "дергает" указанную команду, когда ее время наступило. Я думаю что лучше создать отдельную команду-список, которая будет по очереди вызывать команды на уровне кода и обеспечивать эту последовательность с промежуточными проверками. Чтобы решить эту задачу используя рэббит, нужно больше проверок, больше кода, вероятно что он тут не нужен
Daria Motorina, спасибо большое за ответ!
Основная задача команда - список команд A(у меня так реализовано) пусть выполняется по крону.
То есть я так понимаю, сформировать табличку запуска не основных команд на весь день. (допустим если команда B должна выполняться каждые пять минут, значит создать табличку Query с полями команда, время запуска( b, 14:10; b 14:15.....)).
Далее в списке А проверять , подошла на исполнение команда b из таблицы Query.
минус этого метода в том, что команда b может запуститься раз в день , либо вовсе не запуститься в текущий день.
Основная задача:
команда А выполняет расчеты, команда Б отправляет на сторонний сервер результат. Поэтому нужно обеспечить последовательность запуска команды Б после А, но мы хотим команду Б выполнять в строго определенное время.
mmm45, то, что Вы описали с кроном - это псевдоасинхронное выполнение команды с его помощью, не нужно создавать таблицу в базе для крона, если задача - просто раз в N минут ее выполнять. Почитайте про сам cron в линуксе, без оберток.
Если честно Ваше объяснение проблемы еще больше путает) короче мой посыл в том, чтобы отвязаться от оценки по времени и тупо смотреть в базу или куда еще, сделана операция или нет, чтобы с ней можно было работать. Грубо говоря есть ли флаг в таблице "для этого периода работа сделана, можно брать". Messenger это не решение проблемы, решение проблемы это построить логическую цепочку что зачем следует. Грубо говоря какая разница, самолетом или поездом доставят посылку, если деньги за не переведены, важно сначала за нее заплатить и зафиксировать это, а потом отправлять доступным из возможных транспортов