Ограниченная выборка из базы данных

snug

Новичок
Ограниченная выборка из базы данных

Здравствуйте. У меня проблема, помогите.
Дело такое. Есть список адресов (юрл) в базе данных. Постоянно идут запросы к
этому списку. Нельзя чтоб один и тот же адрес одновременно запросили 2 и более человек. Но как это реализовать? То есть нужно, чтоб ссылка в списке (базе данных) принимала статус "активна" или что-то типа того. И главное чтоб этот статус сбрасывался при переходе на эту ссылку или при закрытии пользователем обозревателя.
Может, кто сталкивался, подскажите, пожалуйста.
 

pilot911

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


PHP:
"select *
from mytbl
where last_query<".(time()-60)
 

dimagolov

Новичок
pilot911, а что, now() не кошерно? зачем запрашивая бд пихать в нее время их php, чтобы нечаяно на разные TZ нарваться?
 

Фанат

oncle terrible
Команда форума
Любимое развлечение пхпклуба - найти частность, максимально удаленную от темы вопроса, и вволю к ней прикопаться.

меня вот больше сама задача интересует. ее осмысленность и формулировка
 

pilot911

Новичок
сравни одно число от time() и строку 2007-12-15 23:50:26

по-моему, для задачи сравнение двух целых будет достаточно
 

dimagolov

Новичок
*****, действительно *shy*

И главное чтоб этот статус сбрасывался при переходе на эту ссылку или при закрытии пользователем обозревателя.
это не реально. в части "при закрытии пользователем обозревателя." а если он через неделю по ней пойдет, что делать?

что за ссылки такие?
 

snug

Новичок
Вобщем вижу что фанат насмехается над вопросом. Формулировка не нравится. Да у меня своеобразный подход к задаче)

Скажу по другому. В базе данных есть таблица со ссылками. Эти ссылки выдаются, по одной, запрашиваемому их пользователю. Перейдя по этой ссылке юзер делает "дело" в результате этого "дела" появляется ещё одна ссылка, которую юзер вносит сам в базу. Выходит, получает он http://site.ru, а вбивает в базу http://site.ru?delo=1&sdelano=1

Нельзя чтобы одновременно это делали 2 и более юзеров. Можно при запросе юзером поставить галку "in_action" и не разрешать при этой галке другим вызывать эту ссылку. Но если user вызвал эту ссылку, а вторую (полученную в результате действий) не записал в базу, что тоже не допустимо. Вот тут я и запутался))

Можно поставить проверку через время. Если в таблице добавленных не появилась ссылка с таким же доменом, то убрать "in_action", что разрешить использовать эту ссылку снова. Юзер может внести полученную ссылку, а может и нет. Если внёс, статус "in_action" убирается, а если не внёс? Походу только проверкой через время 20 минут (к примеру) можно убедится и снять "in_action"
 

dimagolov

Новичок
snug, ты так и не придумал, что делать, если один юзер воспользуется своей ссылкой через 30 минут когда она уже выдана повторно другому юзеру.

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

melo

однажды
хм.. а нельзя это делать без ссылок? просто формировать форму, доступную этому пользователю? а то бред какой-то.
 
Сверху