Триггерная обработка PHP - PullRequest
2 голосов
/ 12 мая 2011

Я задаю аналогичный вопрос вчера, но все это сбивает с толку, и я подумал, что начну снова и попробую объяснить это немного лучше ..

Я собираюсь создать аукционный сайт, почти такой же, как на ebay ... предметы начинаются с 24,12,7,3,1 дней и просчитываются до тех пор, пока не будут закончены ..

Теперь страница, на которой показан элемент, легко узнает, что он закончен, с помощью ajax / jquery, НО, я полагаю, мне нужно будет запустить какой-то запланированный скрипт, который проверяет, когда аукционы закончатся.

Этот скрипт должен преобразовать аукцион в базе данных, чтобы он завершился, чтобы в профиле продавца они могли видеть его завершение, а покупатель мог заплатить.

Проблема в том, что если скрипт запускается каждые 5 минут, это может означать, что аукцион может показаться законченным в области профиля продавца, которая недействительна, до 5 минут.

Кроме того, Покупатель не сможет заплатить, пока его не конвертируют ...

Однако, если бы я запускал скрипт каждые 30-60 секунд, то это наверняка привело бы к чрезмерной нагрузке на сервер, так как скрипт мог бы запускаться несколько раз, если на нем нужно было преобразовать много аукционов, и на это уходит более 30-60 секунд. запустить ??

Ответы [ 3 ]

2 голосов
/ 12 мая 2011

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

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

Итак, на внешнем интерфейсе у вас просто есть какой-то JS (Timed Ajax, Comet или любой из подобных ...), который запрашивает у сервера, достигнута ли конечная временная метка или нет (и, возможно, получает время обратного отсчета осталось и т.д ...)

2 голосов
/ 12 мая 2011

Я не думаю, что запланированный сценарий - это решение, которое вы ищете. Вы можете установить статус аукциона, когда отображаете его для пользователя - в профиле аукционера, в списке аукционов или где-либо еще. Таким образом, вам гарантировано, что тот, кто видит аукцион, видит его со статусом, с которого страница была загружена. В любом случае, наличие запланированного сценария для обновления статуса рекомендуется только в том случае, если у вас есть тяжелая бизнес-логика, которую необходимо выполнить после окончания аукциона

0 голосов
/ 12 мая 2011

Если у вас есть конечная дата (время) в вашей БД, то вы можете просто искать элементы, у которых эта дата либо в прошлом, либо в будущем, в зависимости от ваших требований.Нет необходимости устанавливать что-либо на «готово» как таковое.На странице пользователя «Мой Ebay» вы можете по-разному оформлять элементы в зависимости от их статуса (с какой стороны даты они находятся).

Аналогичным образом, торги могут проводиться только для элементов «на дату» и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...