Witam,
Mam w bazie 5 tabel, w każdej są dane gracza, by je wczytać używam takiego kodu (jest to jeden z 5):
public CheckData(id) {
if(!gConnected) return
new Data[1]
Data[0] = id
new qCommand[512], szName[64]
get_user_name(id, szName, charsmax(szName))
[...]
format(qCommand, charsmax(qCommand), "SELECT * FROM `AK47` WHERE `nick` = '%s'", szName)
SQL_ThreadQuery(gTuple, "CheckHandlerAK47", qCommand, Data, 1)
[...]
[...]
[...]
[...]
}
public CheckHandlerM4A1(FailState, Handle:Query, Error[], Errorcode, Data[], DataSize)
{
new id = Data[0]
if(Errorcode)
log_amx("Blad w zapytaniu: %s [CheckDataM4A1]", Error)
if(FailState == TQUERY_CONNECT_FAILED) {
log_amx("Nie mozna podlaczyc sie do bazy danych.")
return PLUGIN_CONTINUE
}
else if(FailState == TQUERY_QUERY_FAILED) {
log_amx("Zapytanie anulowane [CheckDataM4A1]")
return PLUGIN_CONTINUE
}
if(SQL_MoreResults(Query)){
pM4A1[id][1] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Cyrex"))
pM4A1[id][2] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "DragonKing"))
pM4A1[id][3] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Assimov"))
pM4A1[id][4] = SQL_ReadResult(Query, SQL_FieldNameToNum(Query, "Nuclear"))
}
return PLUGIN_CONTINUE;
}
No i teraz, jak wejdzie nagle 30 osób po zmianie mapy, to trochę to mija zanim wszystko się załaduje. Druga sprawa to zapis, potrafi nieźle namieszać i komuś się nie zapisze.
public SaveData(id) {
if(!gConnected || !Loaded[id]) return
new Data[1]
Data[0] = id
new qCommand[768], szName[64]
get_user_name(id, szName, charsmax(szName))
[...]
[...]
format(qCommand, charsmax(qCommand), "UPDATE M4A1 SET Cyrex='%d', DragonKing='%d', Assimov='%d', Nuclear='%d' WHERE nick='%s'", pM4A1[id][1], pM4A1[id][2], pM4A1[id][3], pM4A1[id][4], szName);
SQL_ThreadQuery(gTuple, "SaveHandler", qCommand, Data, 1)
[...]
[...]
[...]
}
I teraz przez to wszystko, dawanie banów na serwerze trwa nawet kilka minut (Amxbans). Jakieś pomysły jak to zoptymalizować?
Użytkownik oeN. edytował ten post 28.06.2015 18:24


Dodatki SourceMod



Temat jest zamknięty











