|
|
|
| Здравствуйте, попытаюсь проще спросить о том, что мне не понятно.
Итак, к примеру, регистрация пользователей.
В бд хранится время регистрации (времея в сек., упрощаю цифры), скажем, 1023.
И по условию, если пользователь не подтвердит регистрацию в течении 100, то его аккаунт удаляется.
Так вот вопрос: каким образом удалить аккаунт во временной точке равной 1123?
Если запускать по крону, к примеру, то время его запуска будет 1000, 1100, 1200. Т.е. уже расхождение.
Как такое реализуется на хостингах или каких-либо сервисах, когда некое сообщение приходит не в ровный час (23:00), а именно тогда, когда будет ровно некое количество времени после моих действий (так письмо приходит скажем в 23:43:21). | |
|
|
|
|
|
|
|
для: neadekvat
(10.07.2009 в 01:23)
| | поскольку неподтвержденная запись эккаунтом не является еще, с ней работает не так много процессов.
Если не считать администреж, то фактически один - тот, который подтверждает регистрацию.
А значит держать запись в основной таблице эккаунтов необязательно. Можно держать в таблице кандидатов. Тогда никто и не заметит, что кто-то там не успел подтвердиться.
Далее.
Скрипт, получающий данные подтверждения, может начинать свою работу с того, что стирать все устаревшие записи.
В принципе, этим же стартом можно нагрузить и скрипт, добавляющий новых кандидатов.
Вот и всё. И никакой крон не нужен. | |
|
|
|
|
|
|
|
для: Trianon
(10.07.2009 в 01:31)
| | Собстно, я так и думал, что именно эти скрипты буду выполнять подобные вещи.
Логично предположить, что чем крупнее сайт (т.е. чем больше там посещяемость, активность и приток новых пользователей), тем ближе к "критической" дате будут удаляться устаревшие аккаунты.
Ну что ж, спасибо. Мне и нужно было именно подтверждение догадок. А то знаете, сделаешь, а кто посмотрел и обсмеет сразу, да еще и вариант более рациональный предложит. | |
|
|
|
|
|
|
|
для: neadekvat
(10.07.2009 в 01:37)
| | >Логично предположить, что чем крупнее сайт (т.е. чем больше там посещяемость, активность и приток новых пользователей), тем ближе к "критической" дате будут удаляться устаревшие аккаунты.
Еще раз. Не "удалять устаревший", а "не заводить неподтвержденный"
Пока подтверждение не пришло - в таблицу запись не класть.
В этом случае задержка между устареванием и фактическим удалением записи никак не влияет на результат. | |
|
|
|
|
|
|
|
для: Trianon
(10.07.2009 в 01:43)
| | Пока подтверждение не пришло - в таблицу запись не класть
Но и доступ ограничивать нельзя человеку который уже зарегистрировался, но ещё не подтвердил регистрацию.... лично меня как пользователя это жутко бесит | |
|
|
|
|
|
|
|
для: Trianon
(10.07.2009 в 01:43)
| | Так может, тогда (открыл окно ответа и уже забыл, вы что-то такое говорили) завести 2 таблицы: первая - для неподтвержденных, вторая - для подтвержденных.
Конечно, так проверка на уникальность будет занимать вдвое больше времени.
Ну, или можно в одной таблице, но создать столбец, к примеру group_id, где 0 будут неподтвержденные | |
|
|
|
|
|
|
|
для: neadekvat
(10.07.2009 в 01:56)
| | неплохо всё же считать ответы.
Времени вдвое больше не будет.
Кроме того, запрос регистрации ника на карантине должен вызывать по идее слегка другую реакцию.
И обычно запросы регистрации не такие частые, чтобы сильно сказываться на нагрузке.
В той же таблице приведет к усложнению скриптов логона и проверки прав.
А они достаточно часто вызываются. Хотя хозяин - барин... | |
|
|
|
|
|
|
|
для: Trianon
(10.07.2009 в 02:02)
| | Нет, таблицы я все же две сделал.
Про другую реакцию: если логин не подтвержден, то какая, по вашему, должна быть ошибка? "такой логин уже зарегестрирован" или "ждет активации"? | |
|
|
|
|
|
|
|
для: neadekvat
(10.07.2009 в 02:19)
| | такой логин уже в процессе регистрации
попробуйте позже или выберите другой | |
|
|
|
|
|
|
|
для: Trianon
(10.07.2009 в 02:21)
| | Хм, вполне.
Спасибо | |
|
|
|
|
|
|
|
для: neadekvat
(10.07.2009 в 01:37)
| | если вам предложат более рациональный вариант, то - плевать в какой он форме
Воспринимайте смех над Вами как дыру, которую необходимо как можно скорее залатать, чтоб в следующий раз не дать повода посмеяться. | |
|
|
|
|
|
|
|
для: neadekvat
(10.07.2009 в 01:23)
| | ну нехренищи непонятно.....
время регистрации - понятно...
если пользователь не подтвердит регистрацию 100 пудов чего?
Так вот вопрос: каким образом удалить аккаунт во временной точке равной 1123?
а нужно ли это? Мне кажется тут как раз важен результат, а не действие.
И удалить аккаунт можно в любой точке после 1122... т.е. когда происходит какое-то определённое обращение к базе (нужно определить условие) Вы лопатите всю базу на передмет просроченных аккаунтов (их может быть от 0 до BIGINT) | |
|
|
|