@r0664n

Запуск скрипта по команде через определенное время?

Есть скрипт, который обнуляет бронь товара пользователя, если не поступила оплата через определенное время, только нужно это автоматизировать, то есть пока он работает так, что он просто сверяет время, если пользователь выполнит любую команду в боте, это не правильно. Крон не подходит, так как нужно, чтобы скрипт после определенной команды ожидал некоторое время, после чего срабатывал. Цикл for и sleep не подходят, так как процессор нагружается на 100%, есть ли какие то выходы?
  • Вопрос задан
  • 300 просмотров
Пригласить эксперта
Ответы на вопрос 2
@4iloveg
Full-Stack HTML Developer
Пиши время в базу и крон запускай каждую минуту.
Крон смотрит время заказа 12:00 и если текущее время 12:10 а оплаты нет то убирает бронь (какое вам нужно время не известно но предположим 10 мин ожидание). Если крон запустил файл а (текущее время) - (время заказа) < 10 то ничего не делает.
Ответ написан
Что мешает сделать так:
Человек написал боту, совершил бронь.
В PHP пишете echo 'ok' (или что там надо для корректного ответа) и прописываете - fastcgi_finish_request();, потом пишите код:
sleep(600); //600 секунд / 60 = 10 минут (время ожидания)
// * тут код с проверкой, была совершена оплата, или нет *

Минус решения в том, что процесс будет висеть в системе 10 минут + время выполнения и отдача ответа (при грамотной оптимизации кода это 1-3 секунды максимум), но нагрузки он не создаст, так как он попросту будет спать все эти 10 минут.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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