Есть два распространенных способа достичь желаемого.
Оба включают создание таблицы в вашей базе данных (вид списка дел). Ваш интерфейс сохраняет работу, чтобы сделать там.
Первый проще, но это нормально, если вы не возражаете против небольшой задержки. Вы начинаете с создания задачи Symfony. Когда он просыпается (каждые 10/30 / любые минуты), он проверяет эту таблицу, если она имеет какое-либо отношение, просто существует, если нет. В противном случае он делает то, что ему нужно, а затем помечает их как обработанные.
Второй более трудоемкий и более подвержен ошибкам, но может работать мгновенно. Вы создаете задачу, которая демонизирует себя при запуске (разветвляется, снова разветвляется и устанавливает родительский pid на ноль), а затем переходит в режим сна. Если у вас есть работа, вы просыпаетесь, отправляя сигнал. Демонизация и отправка / прием сигнала могут быть выполнены с помощью функций php pcntl_ *.