Я искал ответ для этого и не смог найти аналогичный вопрос, который подходит для варианта использования.
У меня есть продавец, создающий мобильное приложение / API (php, mysql) для меня, и его решение кажется нестабильным и ненадежным. В поисках лучшего подхода.
Возможность позволила бы пользователю установить экземпляр обратного отсчета — сохраненный в базе данных с временем начала и времени окончания в будущем. Как только время окончания достигнуто, действие должно быть выполнено.
В настоящее время решение использует демон на сервере, который запускается каждую минуту, чтобы проверить все завершенные времена окончания и выполнить действие на основе экземпляра обратного отсчета, выбранного пользователем. Проблема, как я уже говорил, очень ненадежна. Когда он работает, он отлично работает. Но это часто не работает.
В клиенте (приложении), когда пользователь нажимает на экран обратного отсчета, он проверяет время начала и время окончания с помощью API и запускает обратный отсчет в соответствующее время. Когда клиент достигает конечного времени, он перезванивает API, чтобы проверить результаты действия и отображает его в клиенте.
Итак, вкратце, я пытаюсь найти более стабильную альтернативу запуску демона на сервере для проверки времени окончания и запуска действия. Поскольку клиент ожидает, что действие будет завершено в конце времени, это должен быть быстрый и надежный процесс. Я рассмотрел использование клиентского вызова API в качестве триггера для запуска действия, но если 40 других клиентов одновременно наблюдают за тем же обратным отсчетом и обращаются к API, я боюсь, что могут возникнуть конфликты.
Заранее спасибо за любой совет здесь!
Пользователь на сайте все время? Я добиваюсь чего-то подобного, получая время начала, конвертируя его в минуты / секунды, а затем создавая обратный отсчет JavaScript, который ждет дополнительные 2 секунды после истечения времени (гарантирует, что таймер действительно истек). Затем он выполняет ajax-вызов php-скрипта для завершения действия (которое возвращает JSON
строка.
Сохраняет серверную часть, и он запускается только тогда, когда пользователь там и нуждается в этом.
Других решений пока нет …