Я бы сделал так:
В крон поставил задачу срабатывающую каждую минуту - 5 минут.
Внутри скрипт который смотрит в базу данных и в зависимости от значений начинает выполнять задачи.
Каждая задача имеет свой статус, который последовательно изменяет.
Соответственно ваша задача при добавлении новой задачи сделать выборку из таблицы и вставить в свободное окно.
Если задачи сложные и долгие, то можно добавить систему приоритетов, допустим вы убиваете процесс с низким приоритетом и запускаете более приоритетный, конечно в этом случае нужно выставлять новый статус.
Это если по простому. В сложном случае используете очереди например
https://www.rabbitmq.com/tutorials/tutorial-one-ph...