Авто-удаление аккаунтов -
Baks - 21.11.2010
Доброго времени суток!
Подскажите, пожалуйста, возможно ли, осуществить автоматическое удаление аккаунта, если игрок, к примеру, не заходил на сервер определенное кол-во времени?
P.S. Cохранение аккаунта через Dini.
Re: Авто-удаление аккаунтов -
lost13 - 21.11.2010
Я как то создавал такую тему на павнору, но мне никто не ответил... но, сдесть в релизах лежит мод LVMAX, там это осуществлено =)
Re: Авто-удаление аккаунтов -
Aleks10 - 22.11.2010
в файл игрока писать нужно время последнео захода
Re: Авто-удаление аккаунтов -
Kernell - 22.11.2010
И что потом? Циклом перебирать все файлы игроков (а если их 5000 или более ?) и проверять там параметр даты?
Хотя я другого решения не вижу, но и этот не вариант.
Если сохранять дату последнего входа в одном файле в формате File|Unixtime ?
Конечно было бы лучше, если бы система аккаунтов была на MySQL, но речь идёт о Dini.
Re: Авто-удаление аккаунтов -
Aleks10 - 22.11.2010
угу, можно и сохранять дату последнего входа и в одном файле, но опять же баги обеспечены
Re: Авто-удаление аккаунтов -
toneysix - 22.11.2010
А как Вы потом собираетесь перебрать все фаилы, которые лежат в папке, если к примеру там будет фаил с ником игрока, т.е Nick1991.ini?
Re: Авто-удаление аккаунтов -
Kernell - 22.11.2010
Дк я же писал об этом. Или я тебя не понимаю..
Quote:
Если сохранять дату последнего входа в одном файле в формате File|Unixtime ?
|
File = файл игрока т.е. его ник естественно.
Unixtime = gettime();
к примеру
"PlayerName|123456789"
разбиваем на 2 части. первая это ник, к "PlayerName" прилепляем ".ini".. как-то так..))
Re: Авто-удаление аккаунтов -
toneysix - 22.11.2010
Нерационально и убого и символ '|' ставить нельзя, при том, что сам игрок может использовать, как делиметр в своем нике.
Re: Авто-удаление аккаунтов -
ZiGGi - 22.11.2010
Quote:
Originally Posted by toneysix
Нерационально и убого и символ '|' ставить нельзя, при том, что сам игрок может использовать, как делиметр в своем нике.
|
С файлами по другому невозможно. Конечно, лучше юзать БД, там с этим гораздо проще.
Re: Авто-удаление аккаунтов -
dimonml - 22.11.2010
Можно, как тут упоминалось, писать в файл профиля дату последнего захода - тогда и дата файла будет обновляться при каждом заходе. А потом раз в месяц командой (или в ручную, кому как удобней) удалять файлы, которые старше, скажем, 3х месяцев, из директории с акаунтами.
В линуксах будет что-то типа
Code:
find директория -type f -mtime +90 -exec rm -f {} \;
или как то так.
man find в общем
Re: Авто-удаление аккаунтов -
lost13 - 22.11.2010
а при запуске сервера? открывать файлы players/*.ini и проверять дату последнего захода... хотя как говорили выше акков может быть очень много... ну просто рестарт займет какоето время)))
Re: Авто-удаление аккаунтов -
dimonml - 22.11.2010
в плагинах что-то для работы с каталогами есть - там должны быть и функции поиска файлов
Re: Авто-удаление аккаунтов -
Kernell - 22.11.2010
Quote:
Originally Posted by toneysix
Нерационально и убого и символ '|' ставить нельзя, при том, что сам игрок может использовать, как делиметр в своем нике.
|
А я сказал, что
обязательно использовать символ '|'? Есть куча других символов, и есть которые
запрещены в нике. Разделить можно чем угодно, я лишь привожу
пример.
Обоснуй чем не рационально и тем более убого? То что ты говоришь глупо и не обоснованно. Или по твоему перебирать каждый файл рациональнее и не убого? Прежде чем делать подобные выводы, приведи хотя бы один факт. Приведи свой более рациональный пример.
lost13,
Прикольно будет, если рестарт продлится 30 минут
Re: Авто-удаление аккаунтов -
Aleks10 - 23.11.2010
проще всё в одном файле сохранять...
даже если файл будет весить +100кбайт(это уже нихреновое кол-во юзеров), то имхо сервер затратит на его обработку от 2 до 10 секунд...
Re: Авто-удаление аккаунтов -
toneysix - 23.11.2010
Kernell по-моему пустые слова пока у тебя дорогои мои, ты сначала сделаи это, чтобы это чётко работало, а потом говори, ибо ты по-моему не сечёшь всеи сути проблемы, которых можно ожидать, лишние проверки на ники и приводят к нерациональности, а ущемление прав игрока тоже не есть хорошо, и как всем известно, любые операции с дисками - это медленные операции, которых лучше избегать. Поэтому мои дорогои про глупость ты не впариваи мне, ну или бабушке впарь она поверит xD
Я бы лучше изменил систему хранения данных, чем делал такие способы, как Kernell, чтобы добавить тормозов на сервер, вы видимо никогда не имели дела с сервером, у которого онлаин > 100, а там придётся учитывать всё, прежде чем реализовывать подобные тормоза.
Aleks10 Ещё лучше, не выспался сегодня? ^^
P.S: Имхо самыи лучшии способ я вижу пока у
dimonml, потому что он не затрагивает доп.работу с фаилами и проверками непосредственно при процессе игры, а тем более, на теории не всегда получается так, как должно было работать на практике, таков сэмп и с этим ничего не поделать.
Re: Авто-удаление аккаунтов -
Aleks10 - 23.11.2010
без БД и внедрения плагина - способ который я предложил(и кто-то ещё вроде) лучше всего
конечно с БД или плагином можно вообще всё в несколько строк сделать и чтобы всё было быстро
Re: Авто-удаление аккаунтов -
[RUS]max - 23.11.2010
В общем не парьтесь пацаны
. Все делается вручную, банально......
заходишь в каталог с аккаунтами, можешь сделать поиск всех файлов дата изменения которых старше требуемого времени и кнопочкой DEL
. либо упорядочить все файлы в каталоге по дате и удалить все файлы которые давно изменялись
. И не надо мозг ломать что и как сделать. ГЫ и сервер не занят этим процессом и все быстро происходит
.
Re: Авто-удаление аккаунтов -
[RUS]max - 23.11.2010
а если серьезно то в коде процесс удаления аккаунтов можно разбить на несколько этапов. Т.е. чтобы не сразу все 5000 или больше файлов обрабатывалось. а скажем по 500 файлов каждую минуту, ведь нет такой необходимости за один заход сносить сразу все что надо.
Re: Авто-удаление аккаунтов -
Aleks10 - 23.11.2010
да кстате, если надо, могу написать плагин для этого дела...
Re: Авто-удаление аккаунтов -
toneysix - 23.11.2010
Зачем нужен плагин, если есть БД, самыи лучшии способ, которыи ничего не затронет - способ dimonml'а, это очевидно, т.е непосредственно при выходе игрока он всё равно обновляет фаил так или иначе, и потом уже командочкои чистим старые фаилы.