Авто-удаление аккаунтов
#1

Доброго времени суток!
Подскажите, пожалуйста, возможно ли, осуществить автоматическое удаление аккаунта, если игрок, к примеру, не заходил на сервер определенное кол-во времени?

P.S. Cохранение аккаунта через Dini.
Reply
#2

Я как то создавал такую тему на павнору, но мне никто не ответил... но, сдесть в релизах лежит мод LVMAX, там это осуществлено =)
Reply
#3

в файл игрока писать нужно время последнео захода
Reply
#4

И что потом? Циклом перебирать все файлы игроков (а если их 5000 или более ?) и проверять там параметр даты?
Хотя я другого решения не вижу, но и этот не вариант.
Если сохранять дату последнего входа в одном файле в формате File|Unixtime ?
Конечно было бы лучше, если бы система аккаунтов была на MySQL, но речь идёт о Dini.
Reply
#5

угу, можно и сохранять дату последнего входа и в одном файле, но опять же баги обеспечены
Reply
#6

А как Вы потом собираетесь перебрать все фаилы, которые лежат в папке, если к примеру там будет фаил с ником игрока, т.е Nick1991.ini?
Reply
#7

Дк я же писал об этом. Или я тебя не понимаю..
Quote:

Если сохранять дату последнего входа в одном файле в формате File|Unixtime ?

File = файл игрока т.е. его ник естественно.
Unixtime = gettime();
к примеру
"PlayerName|123456789"
разбиваем на 2 части. первая это ник, к "PlayerName" прилепляем ".ini".. как-то так..))
Reply
#8

Нерационально и убого и символ '|' ставить нельзя, при том, что сам игрок может использовать, как делиметр в своем нике.
Reply
#9

Quote:
Originally Posted by toneysix
View Post
Нерационально и убого и символ '|' ставить нельзя, при том, что сам игрок может использовать, как делиметр в своем нике.
С файлами по другому невозможно. Конечно, лучше юзать БД, там с этим гораздо проще.
Reply
#10

Можно, как тут упоминалось, писать в файл профиля дату последнего захода - тогда и дата файла будет обновляться при каждом заходе. А потом раз в месяц командой (или в ручную, кому как удобней) удалять файлы, которые старше, скажем, 3х месяцев, из директории с акаунтами.

В линуксах будет что-то типа
Code:
find директория -type f -mtime +90 -exec rm -f {} \;
или как то так. man find в общем
Reply
#11

а при запуске сервера? открывать файлы players/*.ini и проверять дату последнего захода... хотя как говорили выше акков может быть очень много... ну просто рестарт займет какоето время)))
Reply
#12

в плагинах что-то для работы с каталогами есть - там должны быть и функции поиска файлов
Reply
#13

Quote:
Originally Posted by toneysix
View Post
Нерационально и убого и символ '|' ставить нельзя, при том, что сам игрок может использовать, как делиметр в своем нике.
А я сказал, что обязательно использовать символ '|'? Есть куча других символов, и есть которые запрещены в нике. Разделить можно чем угодно, я лишь привожу пример.

Обоснуй чем не рационально и тем более убого? То что ты говоришь глупо и не обоснованно. Или по твоему перебирать каждый файл рациональнее и не убого? Прежде чем делать подобные выводы, приведи хотя бы один факт. Приведи свой более рациональный пример.

lost13,
Прикольно будет, если рестарт продлится 30 минут
Reply
#14

проще всё в одном файле сохранять...
даже если файл будет весить +100кбайт(это уже нихреновое кол-во юзеров), то имхо сервер затратит на его обработку от 2 до 10 секунд...
Reply
#15

Kernell по-моему пустые слова пока у тебя дорогои мои, ты сначала сделаи это, чтобы это чётко работало, а потом говори, ибо ты по-моему не сечёшь всеи сути проблемы, которых можно ожидать, лишние проверки на ники и приводят к нерациональности, а ущемление прав игрока тоже не есть хорошо, и как всем известно, любые операции с дисками - это медленные операции, которых лучше избегать. Поэтому мои дорогои про глупость ты не впариваи мне, ну или бабушке впарь она поверит xD
Я бы лучше изменил систему хранения данных, чем делал такие способы, как Kernell, чтобы добавить тормозов на сервер, вы видимо никогда не имели дела с сервером, у которого онлаин > 100, а там придётся учитывать всё, прежде чем реализовывать подобные тормоза.
Aleks10 Ещё лучше, не выспался сегодня? ^^
P.S: Имхо самыи лучшии способ я вижу пока у dimonml, потому что он не затрагивает доп.работу с фаилами и проверками непосредственно при процессе игры, а тем более, на теории не всегда получается так, как должно было работать на практике, таков сэмп и с этим ничего не поделать.
Reply
#16

без БД и внедрения плагина - способ который я предложил(и кто-то ещё вроде) лучше всего
конечно с БД или плагином можно вообще всё в несколько строк сделать и чтобы всё было быстро
Reply
#17

В общем не парьтесь пацаны . Все делается вручную, банально......
заходишь в каталог с аккаунтами, можешь сделать поиск всех файлов дата изменения которых старше требуемого времени и кнопочкой DEL . либо упорядочить все файлы в каталоге по дате и удалить все файлы которые давно изменялись . И не надо мозг ломать что и как сделать. ГЫ и сервер не занят этим процессом и все быстро происходит .
Reply
#18

а если серьезно то в коде процесс удаления аккаунтов можно разбить на несколько этапов. Т.е. чтобы не сразу все 5000 или больше файлов обрабатывалось. а скажем по 500 файлов каждую минуту, ведь нет такой необходимости за один заход сносить сразу все что надо.
Reply
#19

да кстате, если надо, могу написать плагин для этого дела...
Reply
#20

Зачем нужен плагин, если есть БД, самыи лучшии способ, которыи ничего не затронет - способ dimonml'а, это очевидно, т.е непосредственно при выходе игрока он всё равно обновляет фаил так или иначе, и потом уже командочкои чистим старые фаилы.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)