MySql - выборка задач, которые нужно запустить в текущую минуту - PullRequest
0 голосов
/ 01 мая 2018

Положение:

У меня есть таблица с заданиями (которые нужно запускать с разными интервалами) и два сценария php (initator.php & worker.php). Сценарий инициатора запускается cron каждую минуту, а интервалы сохраняются в столбце вместе с заданиями.

Сценарий инициатора должен проверять, какие задачи следует отправлять рабочему сценарию.

поэтому вопрос: как я могу определить, какие задачи нужно запустить в текущую минуту?

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

1 Ответ

0 голосов
/ 01 мая 2018

Я не понимаю вашего объяснения того, почему вы думаете, что "следующий" - плохая идея.

Ключевой вопрос - насколько масштабируемым должно быть решение. Если вы можете доказать, что у вас никогда не будет более 20 записей, тогда не слишком обременительно читать каждую запись задачи и вычислять следующее запланированное время / проверять, попадает ли оно в конкретное окно. Но когда вы получаете сотни записей, это совсем другая история. Невозможно создать индекс, который может использоваться СУБД при отсутствии атрибута next-запланированного времени выполнения.

...