Крашит сервер после выполнения запроса -
Frapsy - 28.02.2013
Идея: просмотр состава банды/организации.
Запрос такой:
PHP код:
format(string,sizeof(string),"SELECT `Name`,`Rank`,`LastConnect` FROM `users` WHERE `FamMember` = '%d' ORDER BY `Rank` DESC",PlayerInfo[playerid][pFMember]);
mysql_function_query(mysqlid,string,true,"CheckMembers", "d",playerid);
Ф-я:
PHP код:
forward CheckMembers(a);
public CheckMembers(a) {
cache_get_data(rows,fields);
format(str,sizeof(str),"* Банда %s. Всего: %d. Список:",fInfo[PlayerInfo[a][pFMember]][fName],rows);
SendClientMessage(a,COLOR_BLUE,str);
for(new i; i < rows+1; i++) {
strdel(str,0,sizeof(str));
cache_get_row(i,1,str32); format(str64,sizeof(str64),"* %s",str32); strcat(str,str64);
cache_get_row(i,2,str32); integer = strval(str32); format(str64,sizeof(str64)," (Rank: %d)",integer); strcat(str,str64);
cache_get_row(i,3,str32); format(str64,sizeof(str64)," - %s",str32); strcat(str,str64);
SendClientMessage(a,COLOR_YELLOW2,str);
}
SendClientMessage(a,COLOR_BLUE,"________________________");
return 1;
}
str32,str64,integer,str,rows,fields заданы
Проблема вот в чем. Бывает, что все работает на ура, а бывает, что сервер крашит, причем второй вариант чаще. Такую информацию выдает crashdetect:
PHP код:
[04:52:03] [debug] Server crashed while executing gf.amx
[04:52:03] [debug] AMX backtrace:
[04:52:03] [debug] #0 native cache_get_row () [f743f7f0] from mysql.so
[04:52:03] [debug] #1 00131804 in public CheckMembers () from gf.amx
[04:52:03] [debug] System backtrace:
[04:52:03] [debug] #0 f63ebf41 in _ZN10StackTraceC1EPv () from plugins/crashdetect.so
[04:52:03] [debug] #1 f63e241f in _ZN11crashdetect20PrintSystemBacktraceEPv () from plugins/crashdetect.so
[04:52:03] [debug] #2 f63e0963 in _ZN11crashdetect15SystemExceptionEPv () from plugins/crashdetect.so
[04:52:03] [debug] #3 f63eb3c1 in ?? () from plugins/crashdetect.so
[04:52:03] [debug] #4 f775b410 in ?? ()
[04:52:03] [debug] #5 f74d4916 in ?? () from /lib/libc.so.6
[04:52:03] [debug] #6 f7439f4e in _ZN6StrAmx10SetCStringEP6tagAMXiPc () from plugins/mysql.so
[04:52:03] [debug] #7 f743f880 in _ZN7Natives15n_cache_get_rowEP6tagAMXPi () from plugins/mysql.so
[04:52:03] [debug] #8 080938e4 in ?? () from ./samp03svr
[04:52:03] [debug] #9 f63e15a2 in _ZN11crashdetect13DoAmxCallbackEiPiS0_ () from plugins/crashdetect.so
[04:52:03] [debug] #10 f63e965e in ?? () from plugins/crashdetect.so
[04:52:03] [debug] #11 f63f0926 in amx_Exec () from plugins/crashdetect.so
[04:52:03] [debug] #12 f63e1622 in _ZN11crashdetect9DoAmxExecEPii () from plugins/crashdetect.so
[04:52:03] [debug] #13 f63e9699 in ?? () from plugins/crashdetect.so
[04:52:03] [debug] #14 f74424f1 in amx_Exec () from plugins/mysql.so
В чем может быть проблема?
Re: Крашит сервер после выполнения запроса -
eakwarp - 28.02.2013
А что выдает лог mysql?
Re: Крашит сервер после выполнения запроса -
Frapsy - 28.02.2013
PHP код:
[04:52:03] >> mysql_query_callback( Connection handle: 1 )
[04:52:03] Passing query SELECT `Name`,`Rank`,`LastConnect` FROM `users` WHERE `FamMember` = '9' ORDER BY `Rank` DESC | d
[04:52:03] ProcessQueryThread(CheckMembers) - Query was successful. (SELECT `Name`,`Rank`,`LastConnect` FROM `users` WHERE `FamMember` = '9' ORDER BY `Rank` DESC)
[04:52:03] ProcessQueryThread(CheckMembers) - Data caching enabled.
[04:52:03] CMySQLHandler::StoreResult() - Result was stored.
[04:52:03] CMySQLHandler::FreeResult() - Result was successfully free'd.
[04:52:03] CMySQLHandler::ProcessQueryThread() - Data is getting passed to ->ProcessTick()
[04:52:03] CheckMembers(d) - Threaded function called.
[04:52:03] >> cache_get_data( Connection handle: 1 )
Re: Крашит сервер после выполнения запроса -
Tumba - 28.02.2013
Компилируй в дебаг режиме, чтобы увидеть на какую строчку жалуется.
Re: Крашит сервер после выполнения запроса -
Frapsy - 28.02.2013
Эм, это как?
Re: Крашит сервер после выполнения запроса -
Alexander_Petrov - 28.02.2013
Quote:
Originally Posted by Frapsy
Эм, это как?
|
В папке pawno создай файл pawn.cfg с ключом -d3 внутри.
Re: Крашит сервер после выполнения запроса -
ulanzetz - 01.03.2013
Зачем ты переменные, используемые только в одной функции, глобально объявляешь? Да и к ряду ты несуществующему обращаешься.
PHP код:
forward CheckMembers(a); public CheckMembers(a)
{
new rows = 0, fields = 0, string[64];
cache_get_data(rows,fields);
#pragma unused fields
format(string, 64,"* Банда %s. Всего: %d. Список:",fInfo[PlayerInfo[a][pFMember]][fName], rows);
SendClientMessage(a,COLOR_BLUE,str);
for(new i = 0, bigst[128]; i != rows; ++i)
{
cache_get_row(i, 0, string), format(bigst, 128 ,"* %s", string);
cache_get_row(i, 1, string), strcat(bigst, ". Rank: "), strcat(bigst, string);
cache_get_row(i, 2, string), strcat(bigst, ". "), strcat(bigst, string);
SendClientMessage(a, COLOR_YELLOW2, bigst);
}
SendClientMessage(a,COLOR_BLUE,"________________________");
return true;
}
Re: Крашит сервер после выполнения запроса -
Frapsy - 01.03.2013
Они используются не в одной функции.
Насчет ряда спасибо, странно, что иногда, все работало верно.
Re: Крашит сервер после выполнения запроса -
ulanzetz - 02.03.2013
Все равно, если переменные объявлены глобально, они постоянно в памяти, если локально, удаляются после завершения функции