SA-MP Forums Archive
Логирование действий. Нагрузка - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Логирование действий. Нагрузка (/showthread.php?tid=333467)



Логирование действий. Нагрузка - Splav - 11.04.2012

Всем доброго времени суток.

У меня есть написанный с нуля TDM/GW мод. Хочу сделать логирование почти всех действий: авторизация, регистрация, перевод денег, лог убийств, лог всех админ действий, захвата ГангЗон и т.д.

Вопрос: Какая нагрузка будет на севрер. Прошу учесть для онлайна 150-200 человек

Код самой функции:
PHP код:
stock WriteLog(namelog[],string[])
{
    new 
text[256],log[50],param[3],File:LogFile;
    
gettime(param[0], param[1], param[2]);
    
format(textsizeof(text), "[%02d:%02d:%02d]%s\r\n",param[0], param[1], param[2],string);
    
getdate(param[0], param[1], param[2]);
    
format(log,sizeof(log),"logs/%s/[%02d][%02d]%s.log",namelog,param[2], param[1], namelog);
    
LogFile fopen(logio_append);
    for(new 
itext[i] != EOSi++) fputchar(LogFiletext[i], false);
    
fclose(LogFile);

Особенно смущает постоянное открытие/закрытие файлов при записи

Если будет слишком сильно грузить сервер, то посоветуйте, как можно сделать лучше

Заранее спасибо за помощь


Re: Логирование действий. Нагрузка - Stepashka - 11.04.2012

Тебя спасет агрегирование лога.


Re: Логирование действий. Нагрузка - White_116 - 11.04.2012

Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.


Re: Логирование действий. Нагрузка - Splav - 11.04.2012

Quote:
Originally Posted by White_116
Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.
А по-подробнее можно?

Желательно с примером


Re: Логирование действий. Нагрузка - Stepashka - 11.04.2012

pawn Код:
CmdLog(text[], bool:write = false) {
    static cmdLogData[200][384];
    new time[6];
    if (strlen(text)) {
        for (new i; i < sizeof(cmdLogData); i++) {
            if (cmdLogData[i][0]  == EOS) {
                getdate( time[0], time[1], time[2]);
                gettime( time[3], time[4], time[5]);
                format(cmdLogData[i], 384, "[%d.%02d.%02d - %02d:%02d:%02d] %s\n", time[0], time[1], time[2], time[3], time[4], time[5], text);
                break;
            }
        }
    }
    if (write || strlen(cmdLogData[sizeof(cmdLogData) - 1])) {
        new fileName[64];
        getdate( time[0], time[1], time[2]);
        gettime( time[3], time[4], time[5]);
        format(fileName, 64, LOGDIR"[%d.%02d.%02d %02d-%02d-%02d] Log.txt", time[0], time[1], time[2], time[3], time[4], time[5]);
        new File:file = fopen(fileName, io_write);
        for (new i; i < sizeof(cmdLogData); i++) {
            for( new j, len = strlen(cmdLogData[i]); j < len; j++) fputchar(file, cmdLogData[i][j], false);
            cmdLogData[i][0] = EOS;
        }
        fclose(file);
    }
    return 1;
}
так


Re: Логирование действий. Нагрузка - Jon_De - 11.04.2012

Quote:
Originally Posted by Splav
Посмотреть сообщение
Всем доброго времени суток.

У меня есть написанный с нуля TDM/GW мод. Хочу сделать логирование почти всех действий: авторизация, регистрация, перевод денег, лог убийств, лог всех админ действий, захвата ГангЗон и т.д.

Вопрос: Какая нагрузка будет на севрер. Прошу учесть для онлайна 150-200 человек

Код самой функции:
PHP код:
stock WriteLog(namelog[],string[])
{
    new 
text[256],log[50],param[3],File:LogFile;
    
gettime(param[0], param[1], param[2]);
    
format(textsizeof(text), "[%02d:%02d:%02d]%s\r\n",param[0], param[1], param[2],string);
    
getdate(param[0], param[1], param[2]);
    
format(log,sizeof(log),"logs/%s/[%02d][%02d]%s.log",namelog,param[2], param[1], namelog);
    
LogFile fopen(logio_append);
    for(new 
itext[i] != EOSi++) fputchar(LogFiletext[i], false);
    
fclose(LogFile);

Особенно смущает постоянное открытие/закрытие файлов при записи

Если будет слишком сильно грузить сервер, то посоветуйте, как можно сделать лучше

Заранее спасибо за помощь
У Меня через printf все паблики логируются, когда мне надо. Нагрузка незаметна (если судить по наличию лагов, синхре и задержке), тем более с онлайном то 150...


Re: Логирование действий. Нагрузка - Splav - 11.04.2012

Stepashka, большое спасибо


Re: Логирование действий. Нагрузка - Кирилл - 12.04.2012

я считаю что нагрузка минимадьна на сервер ну если сеть то пинг подскачет примерно на 10-30, а цп на 3% в зависимости от качества хостинга. у меня вообще выделенный сервер мне разницы не чувствуется.


Re: Логирование действий. Нагрузка - Stepashka - 12.04.2012

Quote:
Originally Posted by Кирилл
Посмотреть сообщение
я считаю что нагрузка минимадьна на сервер ну если сеть то пинг подскачет примерно на 10-30, а цп на 3% в зависимости от качества хостинга. у меня вообще выделенный сервер мне разницы не чувствуется.
вы вообще тему читали или только заголовок?


Re: Логирование действий. Нагрузка - jhonyxakep - 12.04.2012

Quote:

Особенно смущает постоянное открытие/закрытие файлов при записи

А вы откройте файл один раз при запуске сервера, и закройте при остановке.

Quote:

Давно уже советовали, копишь в "буффер" логи, а потом записываешь их в файл.

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

А еще можно использовать мультипоточные плагины.