Постоянный скрипт

Scion

Новичок
Здравствуйте уважаемые форумчане!

Пишу онлайн аукцион (penny auction) а-ля скандинавский. Каждую секунду идут запросы на сервер для получения информации об аукционах, сколько осталось времени до открытия, получения текущих секунд что остались до закрытия, ну и так далее.

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

Поэтому вопрос как написать скрипт который работает постоянно и обрабатывает все ситуации что описаны выше?

1)Думал насчет крона, но крон запускается раз в минуту, а что если у меня аукцион должен начаться или закончится где то посередине этих двух минут когда крон запускает скрипт?

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

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


Может есть какие то другие подходы о которых я не знаю? Буду признателен за помощь, главное подход, реализую я уже сам. Заранее благодарен!
 

hell0w0rd

Продвинутый новичок
Лениво. В тот момент, как приходит запрос о аукционе проверять то, что нужно.
 

AnrDaemon

Продвинутый новичок
Вообще не интресно. Во-первых, я ещё не видел аукционов, запускающихся МЕЖДУ минутами (это просто смешно), во-вторых, не хватает крона - пиши свой сервис.
 

Scion

Новичок
Вообще не интресно. Во-первых, я ещё не видел аукционов, запускающихся МЕЖДУ минутами (это просто смешно), во-вторых, не хватает крона - пиши свой сервис.
Да масса таких аукционов, все равно смысл в том чтобы ловить секунды, потому что например после ставки добавляется 15 (или например 20) секунд до окончания аукциона. При этом есть функционал автоставок, т.е. я выставил автоставки на аукционы которые мне интересны и могу даже не заходить на сайт - все должно работать. Так вот я и спрашиваю есть ли какие то решения? Может кто то сталкивался уже с такой проблемкой?

Вся суть как раз чтоб фоново постоянно работал какой скрипт который разруливал бы все ситуации и обновлял инфу даже без вмешательства пользователей
 

Scion

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

hell0w0rd

Продвинутый новичок
Да не вариант это, представьте что никто не заходит минуту на аукцион вообще, там уже куча лотов начались и кучу уже закрылось и теперь первый кто зайдет на сайт будет ждать пока все обработается?
Как лоты можно закрыть, если на сайт никто не заходил? По времени? Ну так при создании укажи начало и конец.
По моему ты писать даже не начал, поэтому сам себе выдумываешь проблемы
 

fixxxer

К.О.
Партнер клуба
Получается что будут запускаться другие "параллельные" скрипты по крону каждую минуту. Как бы их упорядочить и чтоб лишние не стартовали?
Если нищеброд с shared хостингом - проверять через pid-файл.
А так - демон, современные init-системы (upstart/systemd) все сделают за тебя.

Хотя не вижу никаких проблем и с вариантом hell0w0rd.
 

Scion

Новичок
Ребята может я не правильно изъяснился?

Итак есть аукционы, при создании которых задается время их начала и окончания - допустим при выставлении даты начала аукциона при подсчете он начнется через 234:45:45 секунд (в таком формате надо показать на сайте)

Механизм работы такой - когда наступает время начала аукциона, остается 15 секунд для того чтобы сделать ставку, после того как кто то ставит ставку, аукцион продлевается еще на 15 секунд и так далее, пока никто

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

И чтобы работали автоставки и так далее, какой то скрипт в фоновом режиме должен это обрабатывать (если допустим никто на сайт не заходит и никаких запросов на сервер не идет)

Теперь объясните мне как то что вы тут написали мне поможет ??? как просто выставление начала и окончания аукциона что то решит? кроме этого нужно после закрытия лота выставлять определенные статусы, выполнять еще какие то действия связанные с этим событием, а если нет запросов на сайт то как они будут выполняться?
 

WMix

герр M:)ller
Партнер клуба
есть список, [лот, ставка, время]. если заджойнить с самим лотом, то будет время завершения, при показе решаешь по этому времени в какой из view показывать. (еще живой или уже оконченный), принимать или не принимать ставку итд
 

AmdY

Пью пиво
Команда форума
в скрипте который обсчитывает время, делай и автоставки перед этим самым обсчётом,чтобы случайно секунду не потерять.
 

hell0w0rd

Продвинутый новичок
Механизм работы такой - когда наступает время начала аукциона, остается 15 секунд для того чтобы сделать ставку, после того как кто то ставит ставку, аукцион продлевается еще на 15 секунд и так далее, пока никто
Если у тебя вариант, который ты описал - то есть клиент сам шлет запросы, то расчитывать прямо во время запроса от клиента.
 

Scion

Новичок
есть список, [лот, ставка, время]. если заджойнить с самим лотом, то будет время завершения, при показе решаешь по этому времени в какой из view показывать. (еще живой или уже оконченный), принимать или не принимать ставку итд
Спасибо за ответ. Да это все понятно, это уже все написано. Я просто вот о чем - представьте что есть некий аукцион на который 10 человек поставили по 5 автоставок, теперь никого на сайте нет, или никто не заходил именно на страницу этого аукциона - ведь люди поставили автоставки, в этом и суть что можно вообще гулять и не следить за аукционом. Теперь кто то заходит на страницу - и получается что нужно как тока зашли обработать все автоставки для этого аукциона!? А что если еще нужно письма какие то слать что сделана ставка или перебита? Я просто к тому веду что этому человеку что зашел тупо придется кучу времени ждать пока все это отработает!
 

AnrDaemon

Продвинутый новичок
Ребята может я не правильно изъяснился?

Итак есть аукционы
Заменив "у меня есть" на "я хочу", получаем более полное представление о том, что у тебя на самом деле есть.
Как кто-то из древних выразился, "хотеть не вредно - вредно не хотеть".

Механизм работы такой - когда наступает время начала аукциона, остается 15 секунд для того чтобы сделать ставку, после того как кто то ставит ставку, аукцион продлевается еще на 15 секунд и так далее, пока никто
Какая кому разница, что происходит с аукционом, которого никто не видит? Всем плевать, и тебе должно быть наплевать в первую очередь. У тебя ещё аукционов то нету, для начала, чтобы начинать заранее беспокоиться.
Вот когда на аукционы кто-то решит посмотреть - тогда можешь начинать считать, что там с ними проиходит.
Ну а дальше вообще лениво цитировать. Не интересно. Проблема из пальца высосана.
 

Scion

Новичок
Если у тебя вариант, который ты описал - то есть клиент сам шлет запросы, то расчитывать прямо во время запроса от клиента.
Спасибо.Вот именно, обработка идет тех аукционов что видит пользователь на странице - а как же остальные? на второй странице? их обрабатывать будем если кто то надумает туда заглянуть?
 

AnrDaemon

Продвинутый новичок
Повторяю вопрос - что мешает запускать крон раз в час (полчаса… пять минут… раз в минуту, наконец!) для усушки и утруски аукционов, которые никто не посетил?
Если не посетили - значит, никому не интересно, значит, никого не колышет, когда они будут обработаны - сейчас или на пять минут позже.
Короче, юношеский максимализм выставляйте за дверь и начинайте думать верхней головой уже.
 

Scion

Новичок
Повторяю вопрос - что мешает запускать крон раз в час (полчаса… пять минут… раз в минуту, наконец!) для усушки и утруски аукционов, которые никто не посетил?
Если не посетили - значит, никому не интересно, значит, никого не колышет, когда они будут обработаны - сейчас или на пять минут позже.
Короче, юношеский максимализм выставляйте за дверь и начинайте думать верхней головой уже.
К чему эта лирика? Я уже объяснил по крону более чем достаточно - если у вас разыгралось воображение, думаю на форуме есть курилка, сходите.
 

hell0w0rd

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

AnrDaemon

Продвинутый новичок
К чему эта лирика? Я уже объяснил по крону более чем достаточно - если у вас разыгралось воображение, думаю на форуме есть курилка, сходите.
Это была не "лирика", как вы изволили выразиться, это был технический подход к решению технической задачи.
А вы пытаетесь нас тут эмоциями продавить.
 

Scion

Новичок
Это была не "лирика", как вы изволили выразиться, это был технический подход к решению технической задачи.
А вы пытаетесь нас тут эмоциями продавить.


"Если не посетили - значит, никому не интересно, значит, никого не колышет, когда они будут обработаны - сейчас или на пять минут позже.
Короче, юношеский максимализм выставляйте за дверь и начинайте думать верхней головой уже." - совершенно технический подход к решению технической проблемы! Я больше не намерен отвечать на вашу дерзость, слишком много непонятных мне технических аспектов
 
Сверху