Задать вопрос
@wefhuieu

Как определить что время истекло?

Здравствуйте. Ребят подскажите, как узнать скрипту, о том что время на проверку у заказа закончилось, и он принят автоматически системой, как реализовано на кворке, когда заказали услугу, человек её сдал, и дается время к примеру 3 дня, чтобы заказчик проверил и подтвердил, если заказчик не принимает, система автоматически через 3 дня, завершает заказ, и ставит статус выполнено.

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

Подскажите как реализовано это на кворке, буду очень признателен! Спасибо)
  • Вопрос задан
  • 424 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 1
PavelK
@PavelK
Доброго дня.
Как раз через Крон самый вариант.

Вам не обязательно делать "кучу" запросов - SQL язык достаточно мощный и можете за один раз выбрать всю интересующую информацию.

Раз в секунду вовсе не обязательно. Если "3 дня на проверку", то достаточно проверять раз в час, или раз в сутки вообще (смотря с какой точностью Вам надо).

Сомневаюсь, что у Вас будет столь "высоконагруженный" сервис, что бы обработка хотя бы 1000 позиций заняло сколь нибудь существенное время.
Если всё таки по каким-то причинам не хватает 30 секунд на выполнение скрипта и реально "существенная" нагрузка - обрабатывайте порциями (одним запросом выгружаете всё, что нужно обработать, ставите флаг, что не запускать до конца обработки, а потом уже обрабатываете 100 штук за раз, а после снимаете флаг), либо переписываете код по-нормальному и оптимизируете, либо создаёте кластер серверов и распределяете задания, но это совсем другая история. Думаю, принцип понятен.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Чего там сложного, берется время завершения работы, и считается 3 дня, если 3 дня прошло, значит заказ принят. Если очень охота - в момент этой проверки можно ставить еще в бд какой-то флаг, но в принципе не обязательно.
Ответ написан
Ваш ответ на вопрос

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

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