Не сохраняются файлы -
stabker - 27.05.2012
Вот вчера я создавал
тему о том что у меня не сохраняются аккаунты, думал проблема где-то в коде. Теперь заметил что проблема не в сохранялке акков, а вообще что-то странное с файлами. Не сохраняется также информация о ганг зонах, статистиках фракций и т.д.
Одним словом что лежит в папке scriptfiles. Но помоему cfg файлы сохраняются, т.к. с файлом property.cfg в котором у меня конфиг домов все нормально и он сохраняется, а проблема только с ini файлами.
В коде думаю ошибки такой не может быть, т.к. я ничего не менял чтобы с файлами работать. С инклудами тоже все норм, т.к. вот позавчера переводил на 0.3е и инклуды заменял. В чем же тогда? Думал также из-за того что в папке scriptfiles много файлов (около 60к) но нет, почистил старые, оставил около 20к и всеравно тоже самое.
Из-за чего это может быть?
Очень надеюсь на вашу помочь.
Re: Не сохраняются файлы -
eakwarp - 27.05.2012
Атрибуты 777 на скриптфайлз и все вложенные файлы и папки поставьте.
Re: Не сохраняются файлы -
stabker - 27.05.2012
Quote:
Originally Posted by eakwarp
Атрибуты 777 на скриптфайлз и все вложенные файлы и папки поставьте.
|
Я тоже на chmod думал, у меня на самой папке 755, а на ini файлах акков стоит 666. Но 666 помоему тоже дает доступ на чтение/запись? Или я ошибаюсь?
Re: Не сохраняются файлы -
eakwarp - 27.05.2012
Поставьте 777. Если не поможет, значит проблема в обработчике ini.
Re: Не сохраняются файлы -
stabker - 27.05.2012
Quote:
Originally Posted by eakwarp
Поставьте 777. Если не поможет, значит проблема в обработчике ini.
|
А как мне это сделать одновременно для всех файлов?) Ведь все новые которые будут создаватся всеравно получат 666.
P.S. А ошибка в коде может вызывать подобное? Например если один из ini файлов открывается в стоке?
Re: Не сохраняются файлы -
eakwarp - 27.05.2012
Quote:
Originally Posted by stabker
А как мне это сделать одновременно для всех файлов?) Ведь все новые которые будут создаватся всеравно получат 666.
P.S. А ошибка в коде может вызывать подобное? Например если один из ini файлов открывается в стоке?
|
Создаваемые файлы получают те права, которые стоят на дериктории в которой они создаются(в большинстве систем).
Любой сток - функция, так что, RTFM!
Re: Не сохраняются файлы -
stabker - 27.05.2012
Quote:
Originally Posted by eakwarp
Создаваемые файлы получают те права, которые стоят на дериктории в которой они создаются(в большинстве систем).
Любой сток - функция, так что, RTFM!
|
Щас поставлю 777. Кстати, после этого рестарт сервера требуется?
И еще, что меня удивило! При бане по ip мне выдает (первый раз) Server: Unknown Command но ip банит. Раньше такого не было. Вот код команды
PHP код:
else if(strcmp(cmd,"/banip",true)==0)
{
if(PlayerInfo[playerid][pAdmin] >= 3)
{
tmp = strtok(cmdtext,idx);
if(!strlen(tmp)) return SendClientMessage(playerid,COLOR_WHITE,"::: Введите: /banip [IP адрес]");
if (dostup[playerid] != 1) return ShowPlayerDialog(playerid,2934,DIALOG_STYLE_INPUT,"Доступ администратора","Введите пароль от административной панели","Ок","Отмена");
format(string,sizeof(string),"banip %s",tmp);
SendRconCommand(string);
SendRconCommand("reloadbans");
GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
GetPlayerName(playerid, sendername, sizeof(sendername));
format(string,100, "%s забанил IP: %s", sendername, tmp);
ABroadCast(COLOR_LIGHTRED,string,1);
new iniFile = ini_openFile("logs/logi/banip.cfg");
ini_setString(iniFile, "IP\n",tmp);
ini_closeFile(iniFile);
}
}
Если еще раз команду ввести то уже нету "Server: Unknown Command"
Re: Не сохраняются файлы -
eakwarp - 27.05.2012
pawn Код:
new iniFile = ini_openFile("logs/logi/banip.cfg");
if(iniFile)
{
ini_setString(iniFile, "IP\n",tmp);
ini_closeFile(iniFile);
}
Может все-таки лучше так?
Показывайте ваш обработчик ини.
Re: Не сохраняются файлы -
stabker - 27.05.2012
Quote:
Originally Posted by eakwarp
pawn Код:
new iniFile = ini_openFile("logs/logi/banip.cfg"); if(iniFile) { ini_setString(iniFile, "IP\n",tmp); ini_closeFile(iniFile); }
Может все-таки лучше так?
Показывайте ваш обработчик ини.
|
Что вы подразумеваете под "обработчик ини"? Если я правильно то это инклуд mxINI?
Re: Не сохраняются файлы -
stabker - 27.05.2012
Что самое интересное, перезагружаю сервер и все работает прекрасно минут 10-20. Потом начинается вот такая проблема. Поставил более старую версию сервера всеравно тоже самое, хотя на то время такого не было. Захожу в FTP смотрю инфу акка там вся статистика на месте, а при входе всего того что в конфиге нету! Вообще в голове не укладывается из-за чего это. Думаю на хостинге что-то, мб ли такое?
Re: Не сохраняются файлы -
ZiGGi - 27.05.2012
Quote:
Originally Posted by stabker
Что самое интересное, перезагружаю сервер и все работает прекрасно минут 10-20. Потом начинается вот такая проблема. Поставил более старую версию сервера всеравно тоже самое, хотя на то время такого не было. Захожу в FTP смотрю инфу акка там вся статистика на месте, а при входе всего того что в конфиге нету! Вообще в голове не укладывается из-за чего это. Думаю на хостинге что-то, мб ли такое?
|
Убери все
\n в ключах.
Т.е. не так: ini_setString(iniFile, "IP\n",tmp);
а так: ini_setString(iniFile, "IP",tmp);
Re: Не сохраняются файлы -
stabker - 27.05.2012
Quote:
Originally Posted by ZiGGi
Убери все \n в ключах.
Т.е. не так: ini_setString(iniFile, "IP\n",tmp);
а так: ini_setString(iniFile, "IP",tmp);
|
У меня \n только в одном случае, здесь. Это тут не причем, просто на заметку кинул.
Как понять то что сначала после рестарта все сохраняется, а спустя некоторое время нет?
Re: Не сохраняются файлы -
stabker - 28.05.2012
Похоже что я все понял, щас буду разбиратся. Вообщем я думаю что какой-то файл по той или иной причине открывается но не закрывается, достигается лимит открытых файлов и после этого нельзя уже проводить операции с ними. Тоесть при попытке сохранения файл не открывается из-за лимита, при загрузке (входе) тоже самое.
Покрайней мере специально изменив значение INI_MAX_OPENED_FILES в mxINI на 2, я открыл 2 файла но не закрывал, получилась точно таже самая проблема что и во время игры. Скорее всего это именно оно. Это вполне объясняет то, почему файлы перестают подгружатся и сохранятся не сразу.
Re: Не сохраняются файлы -
ZiGGi - 28.05.2012
Quote:
Originally Posted by stabker
Похоже что я все понял, щас буду разбиратся. Вообщем я думаю что какой-то файл по той или иной причине открывается но не закрывается, достигается лимит открытых файлов и после этого нельзя уже проводить операции с ними. Тоесть при попытке сохранения файл не открывается из-за лимита, при загрузке (входе) тоже самое.
Покрайней мере специально изменив значение INI_MAX_OPENED_FILES в mxINI на 2, я открыл 2 файла но не закрывал, получилась точно таже самая проблема что и во время игры. Скорее всего это именно оно. Это вполне объясняет то, почему файлы перестают подгружатся и сохранятся не сразу.
|
У меня была точно такая-же проблема. Открывался файл, было какое-то условие и если оно выполнялось то обработка функции заканчивалась(return), а закрытие файла стояло в конце функции...
Re: Не сохраняются файлы -
stabker - 28.05.2012
Всеравно что-то не так... пересмотрел весь код, вроде как все норм. Написал себе команду чтобы в игре проверять есть ли постоянно забитые слоты для открытых файлов, показывает что нету. Вот
PHP код:
else if(strcmp(cmd, "/test1", true) == 0)
{
new iniFile = ini_openFile("Stabker_Steepson.ini");
ini_closeFile(iniFile);
format(string,10,"№ %d",iniFile);
SendClientMessage(playerid,COLOR_LIGHTRED,string);
return 1;
}
При вводе команды выдает 0. А если слоты для файлов забиты то по идеи должно ошибку выдавать число < 0, либо если не все то число > 0.
Re: Не сохраняются файлы -
Stepashka - 28.05.2012
Команда бред, и ни когда ни при каких обстоятельствах не покажет тебе количество открытых файлов.
Только ручками только глазками и только в редакторе!
Re: Не сохраняются файлы -
stabker - 28.05.2012
Quote:
Originally Posted by Stepashka
Команда бред, и ни когда ни при каких обстоятельствах не покажет тебе количество открытых файлов.
Только ручками только глазками и только в редакторе!
|
Ошибаешся, она покажет сколько файлов не закрыто +1 этот который я открываю. Я специально делал вот так
PHP код:
else if(strcmp(cmd, "/test", true) == 0)
{
ini_openFile("One.ini");
ini_openFile("Two.ini");
ini_openFile("Three.ini");
return 1;
}
и при вводе команды /test1 получал "№ 3"
И что самое интересное, если бы были заняты все ячейки то оно не загружало бы и не сохраняло бы, а так загружает, но сохранять не хочет. А на другой версии вообще пишет что файла нету, либо не загружает.
ЗЫ mxINI помещает id файла в свободную ячейку, а т.к. скорость выполнения большая то они обычно строятся по порядку и если все без проблем то всегда будет 0
Re: Не сохраняются файлы -
Stepashka - 28.05.2012
А не проще найти все
ini_openFile и проверить логику: вдруг где-то
return происходит быстрее чем ini_closeFile?!
Re: Не сохраняются файлы -
jhonyxakep - 29.05.2012
Quote:
А как мне это сделать одновременно для всех файлов
|
chmod -R 777 *
А еще сменить юзера:
chown -R `whoami` *
Quote:
И что самое интересное, если бы были заняты все ячейки то оно не загружало бы и не сохраняло бы, а так загружает, но сохранять не хочет. А на другой версии вообще пишет что файла нету, либо не загружает.
|
PHP код:
else if(strcmp(cmd, "/test1", true) == 0)
{
new iniFile = ini_openFile("Stabker_Steepson.ini");
ini_closeFile(iniFile);
format(string,10,"№ %d",iniFile);
SendClientMessage(playerid,COLOR_LIGHTRED,string);
return 1;
}
Возвращает текущий слот открытого файла.
Мало того
PHP код:
for ( new slot = 0; slot < INI_MAX_OPENED_FILES; slot++ ) // перебор всех слотов ОЗУ
if // если уже есть такой открытый файл
(
_ini_nSlotUsed[slot] != 0
&& strcmp( szFilePath, _ini_szFilePath[slot], false ) == 0
)
return slot; // просто вернем его слот
Вы уверены, что этот файл уже не открыт?
Re: Не сохраняются файлы -
dimonml - 29.05.2012
Список открытых файлов по каждому процессу можно посмотреть специальными утилитами. см ******