Я задаю аналогичный вопрос вчера, но все это запуталось, и я подумал, что начну снова, и попытаюсь объяснить это немного лучше.
Я собираюсь спроектировать сайт аукциона, почти так же, как ebay … пункты начинаются с 24,12,7,3,1 дней и отсчитываются до тех пор, пока они не будут закончены.
Теперь легко для страницы, которая показывает элемент, который должен знать его законченный с помощью ajax / jquery BUT, я предполагаю, что мне нужно будет запустить какой-то запланированный скрипт, который проверяет, когда аукционы закончены.
Этот скрипт должен будет конвертировать аукцион в базу данных до конца, чтобы в профиле продавцов они могли видеть его завершенным, и покупатель может заплатить.
Проблема заключается в том, что сценарий запускается каждые 5 минут, это означает, что аукцион может занять до 5 минут, пока аукцион не будет завершен в области профиля продавцов.
Также Покупатель не сможет заплатить, пока его не перевернут …
Однако, если я буду запускать скрипт каждые 30-60 секунд, это будет слишком большой нагрузкой на сервер, так как сценарий может запускаться несколько раз, если у него много аукционов для конвертирования и требуется более 30-60 секунд для запуска?
Я не думаю, что запланированный скрипт – это решение, которое вы ищете. Вы можете установить статус аукциона, когда вы показываете его пользователю – будь то в профиле аукциониста или в списке аукционов или в другом месте. Таким образом, вам гарантировано, что тот, кто видит аукцион, видит его со статусом с момента загрузки страницы. Во всяком случае, наличие запланированного сценария для обновления статуса рекомендуется только тогда, когда у вас есть тяжелая бизнес-логика, которая должна быть выполнена, когда аукцион истек.
Вам не нужно запускать скрипт в фоновом режиме, чтобы узнать, закончился ли аукцион. Все, что вам нужно сделать, это сохранить временную метку конечной даты / времени и сравнить ее с тем, чтобы получить статус.
Вам все еще может понадобиться сценарий стиля демона, который обрабатывает аукционы и делает то, что ему нужно, с регулярным интервалом, но это не должно диктовать какую-либо логику интерфейса.
Итак, на интерфейсе у вас есть только JS (Timed Ajax, Comet или любой из подобных …), который запрашивает сервер, достигнут ли временной отметки или нет (и, возможно, время обратного отсчета осталось и т. Д.). …)
Если в вашей базе данных есть конечная дата (время), вы можете просто искать элементы, в которых эта дата либо в прошлом, либо в будущем, в зависимости от ваших требований. Нет необходимости устанавливать что-либо «законченному», как таковому. На странице «Мой Ebay» пользователя вы можете стилизовать элементы по-разному в зависимости от их статуса (на какой стороне даты они есть).
Аналогичным образом, торги могут проводиться только по пунктам «на дату» и т. Д.