Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Временная точность
 
 автор: neadekvat   (10.07.2009 в 01:23)   письмо автору
 
 

Здравствуйте, попытаюсь проще спросить о том, что мне не понятно.
Итак, к примеру, регистрация пользователей.
В бд хранится время регистрации (времея в сек., упрощаю цифры), скажем, 1023.
И по условию, если пользователь не подтвердит регистрацию в течении 100, то его аккаунт удаляется.
Так вот вопрос: каким образом удалить аккаунт во временной точке равной 1123?
Если запускать по крону, к примеру, то время его запуска будет 1000, 1100, 1200. Т.е. уже расхождение.
Как такое реализуется на хостингах или каких-либо сервисах, когда некое сообщение приходит не в ровный час (23:00), а именно тогда, когда будет ровно некое количество времени после моих действий (так письмо приходит скажем в 23:43:21).

  Ответить  
 
 автор: Trianon   (10.07.2009 в 01:31)   письмо автору
 
   для: neadekvat   (10.07.2009 в 01:23)
 

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

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

Вот и всё. И никакой крон не нужен.

  Ответить  
 
 автор: neadekvat   (10.07.2009 в 01:37)   письмо автору
 
   для: Trianon   (10.07.2009 в 01:31)
 

Собстно, я так и думал, что именно эти скрипты буду выполнять подобные вещи.

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

Ну что ж, спасибо. Мне и нужно было именно подтверждение догадок. А то знаете, сделаешь, а кто посмотрел и обсмеет сразу, да еще и вариант более рациональный предложит.

  Ответить  
 
 автор: Trianon   (10.07.2009 в 01:43)   письмо автору
 
   для: neadekvat   (10.07.2009 в 01:37)
 

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

Еще раз. Не "удалять устаревший", а "не заводить неподтвержденный"
Пока подтверждение не пришло - в таблицу запись не класть.

В этом случае задержка между устареванием и фактическим удалением записи никак не влияет на результат.

  Ответить  
 
 автор: Valick   (10.07.2009 в 01:51)   письмо автору
 
   для: Trianon   (10.07.2009 в 01:43)
 

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

  Ответить  
 
 автор: neadekvat   (10.07.2009 в 01:56)   письмо автору
 
   для: Trianon   (10.07.2009 в 01:43)
 

Так может, тогда (открыл окно ответа и уже забыл, вы что-то такое говорили) завести 2 таблицы: первая - для неподтвержденных, вторая - для подтвержденных.
Конечно, так проверка на уникальность будет занимать вдвое больше времени.
Ну, или можно в одной таблице, но создать столбец, к примеру group_id, где 0 будут неподтвержденные

  Ответить  
 
 автор: Trianon   (10.07.2009 в 02:02)   письмо автору
 
   для: neadekvat   (10.07.2009 в 01:56)
 

неплохо всё же считать ответы.
Времени вдвое больше не будет.
Кроме того, запрос регистрации ника на карантине должен вызывать по идее слегка другую реакцию.
И обычно запросы регистрации не такие частые, чтобы сильно сказываться на нагрузке.
В той же таблице приведет к усложнению скриптов логона и проверки прав.
А они достаточно часто вызываются. Хотя хозяин - барин...

  Ответить  
 
 автор: neadekvat   (10.07.2009 в 02:19)   письмо автору
 
   для: Trianon   (10.07.2009 в 02:02)
 

Нет, таблицы я все же две сделал.
Про другую реакцию: если логин не подтвержден, то какая, по вашему, должна быть ошибка? "такой логин уже зарегестрирован" или "ждет активации"?

  Ответить  
 
 автор: Trianon   (10.07.2009 в 02:21)   письмо автору
 
   для: neadekvat   (10.07.2009 в 02:19)
 

такой логин уже в процессе регистрации
попробуйте позже или выберите другой

  Ответить  
 
 автор: neadekvat   (10.07.2009 в 02:35)   письмо автору
 
   для: Trianon   (10.07.2009 в 02:21)
 

Хм, вполне.
Спасибо

  Ответить  
 
 автор: Valick   (10.07.2009 в 01:49)   письмо автору
 
   для: neadekvat   (10.07.2009 в 01:37)
 

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

  Ответить  
 
 автор: Valick   (10.07.2009 в 01:34)   письмо автору
 
   для: neadekvat   (10.07.2009 в 01:23)
 

ну нехренищи непонятно.....
время регистрации - понятно...
если пользователь не подтвердит регистрацию 100 пудов чего?
Так вот вопрос: каким образом удалить аккаунт во временной точке равной 1123?
а нужно ли это? Мне кажется тут как раз важен результат, а не действие.
И удалить аккаунт можно в любой точке после 1122... т.е. когда происходит какое-то определённое обращение к базе (нужно определить условие) Вы лопатите всю базу на передмет просроченных аккаунтов (их может быть от 0 до BIGINT)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования