Как сделать обратный отчет на сервере через php?

Скажем пользователь совершил какое-то действие, сервер начинает обратный отсчет. Что-то вроде setTimeout только на сервере. По завершении отсчета нужно сделать определенное действие, если есть определенное условие (запись в базе данных). Например запустить функцию php.
  • Вопрос задан
  • 2854 просмотра
Пригласить эксперта
Ответы на вопрос 4
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
php ориентирован на парадигму "как можно быстрее отдать ответ клиенту и умереть", в нем нет событийной модели.
Соответственно аналога setTimeout там нет.
Есть функция sleep но использовать её в таком ракурсе - варварство.

Если вам нужно обрабатывать какой то таймаут, правильное решение заносить эти таймауты в какую то таблицу для дальнейшей обработки, и обрабатывать истекшие задачи по крону например.
Ответ написан
Чисто на сервере — добавлять задачу в cron. Выполняемый по cron'у скрипт сначала проверяет условие, на основе чего решает, продолжать выполняться или нет (ну или вызывает/не вызывает другой скрипт).
Ответ написан
Комментировать
mrdubz
@mrdubz
front end developer
А зачем считать время пыхой? Отправляйте на сервер timestamp и считайте на клиенте, а потом сверяйте и выполняйте другие действия.
Ответ написан
Сейчас реализовываю нечто подобное. Я делаю так:
- в хранилище пишется timestamp начала отсчета (+ мы имеем кол-во минут отсчета таймера)
- передаем на клиент сколько секунд осталось до завершения таймера по формуле timestampFromStorage - nowTimestamp

timestamp передавать на клиент бессмысленно, потому что локальное время может быть установлено любое.

Из минусов такого подхода будет то, что передача с сервера на клиент занимает какое-то время, на это время у нас будет клиент опаздывать.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы