Threaded mySQL
#1
Mis pluginast jutt on? Tegemist oleks BlueG mySQL pluginaga.
Teema: http://forum.sa-mp.com/showthread.php?t=56564

BlueG mySQL plugin wiki asub sellel lingil: http://wiki.sa-mp.com/wiki/MySQL/R33
See on vägagi kasulik, kõik vajalikud parameetrid on välja toodud ning näide, kuidas teatud funktsiooni kasutada.




Quote:The idea with a threaded query is that while the query is busy the sa-mp server can continue on and execute other things (sync!). When the query is done, the MySQL servers calls the function you specify and you can go on loading your data.

With an unthreaded query, the sa-mp server has to wait for the response from the MySQL server before it can continue. This is especially troublesome if the query takes more than a few milliseconds to execute. During this "timeout" nothing happens. No syncing, nothing.
Idee seisneb selles, et kui "threaded" päring on hõivatud (nt töötlemisel) ning server saab ikka jätkada oma tööd ja käivitada teisi funktsioone jpt ning kui "threaded" päring on lõpule jõudud, siis kutsutakse loodud funktsiooni esile. Mingit viivitust pole, väga hea, eks?
Mis selles vahe on siiski? "Unthreaded" päringu töötlemisel aga peab server ootama kuni saab mySQL'ilt vastust, kui vaja edasi jätkada. Muidugi see pole probleem, aga mõned päringud võivad võtta mõnikümmend millisekundit, et lõpule jõuda. See võib probleemiks olla.




Ühendamine käib samamoodi nagu vanasti.
Code:
MySQL_con = MySQLConnect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS,MYSQL_DB);
Muidugi enne seda funktsiooni peab olema need:
Code:
#define MYSQL_HOST "hosti aadress"
#define MYSQL_USER "mysql kasutaja"
#define MYSQL_PASS "mysql parool"
#define MYSQL_DB "mysql andmebaasi nimi"

Tegemist on threaded värgiga, kuna siin lisad query funktsiooni, mis saadab päringu su loodud funktsioonile/kutsub su loodud funktsiooni esile. Praegu aga loome funktsiooni, mis laeks andmebaasist maju.
Code:
new LoadHouses_query[64];
format(LoadHouses_query, sizeof(LoadHouses_query), "SELECT * FROM majad ORDER BY id ASC");
mysql_function_query(MySQL_con, LoadHouses_query, true, "LoadHouses", "", "");

mysql_function_query( connectionHandle, query[], bool:cache, callback[], format[], {Float,_}:... )

Ning siin on loodud funktsioon... Selles funktsioonis töötletakse mySQL päring - lisatakse majad "HouseData" massiivi.
Code:
public LoadHouses()
{
    new // uute muutujate määramine
        rows, // read
        fields, // väljad
        g_str[128] // string
    ;
    cache_get_data(rows, fields, MySQL_con);
    if(rows)
    {
        new x;
        while(x < rows)
        {
            cache_get_field_content(x, "id", g_str), HouseData[x][SQLID] = strval(g_str); // Võtame selle rea "id" veergust väärtuse
            cache_get_field_content(x, "MajaNimi", HouseData[x][House_Name]); // Võtame selle rea "MajaNimi" veergust väärtuse
            x++;
        }
    }
    return 1;
}

cache_get_field_content( row, const field_name[], dest[] [, connectionHandle = 1] )

//.. Täiendamisel ..//




Üks eestlane on teinud mySQL cache kohta õpetust, aga kahjuks inglise keeles.
Teema link: http://forum.sa-mp.com/showthread.php?t=337810
Reply
#2
Seleta ära, mis on threaded query ja miks seda vaja on.
Sex, Drums and Rock'n'Roll
Reply
#3
Tee või tina, ma vaatan ja ei saa mittemidagi aru Big Grin ma ikka olen nii lammas selle MySql-i kohapealt Big Grin
Vaata lisaks!! Minu tehtud õpetused ja funksioonid mida olen teinud ja kokku kogunud!!

SIIT


By Geto244
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)