[MYSQL] Loading teleports stucking the server
#1

PHP код:
stock ReloadTeleports()
{
    new 
String[64], query[128], Cache:result, getint, getstr[32], Float:getfloat;
    for(new 
i = 0; i < MAX_TELEPORTS; i++)
    {
        
mysql_format(sql, query, sizeof query, "SELECT * FROM `Teleports` WHERE `ID` = %d", i);
        
result = mysql_query(sql, query);
        if(
cache_num_rows())
        {
        
getint = cache_get_field_content_int(0, "ID"); TPDB[i][ID] = getint;
        
cache_get_field_content(0, "Description", getstr); format(TPDB[i][Description], 32, getstr);
        
getfloat = cache_get_field_content_float(0, "X1"); TPDB[i][X1] = getfloat;
        
getfloat = cache_get_field_content_float(0, "Y1"); TPDB[i][Y1] = getfloat;
        
getfloat = cache_get_field_content_float(0, "Z1"); TPDB[i][Z1] = getfloat;
        
getfloat = cache_get_field_content_float(0, "A1"); TPDB[i][A1] = getfloat;
        
getint = cache_get_field_content_int(0, "Interior1"); TPDB[i][Interior1] = getint;
        
getint = cache_get_field_content_int(0, "VirtualWorld1"); TPDB[i][VirtualWorld1] = getint;
        
getfloat = cache_get_field_content_float(0, "X2"); TPDB[i][X2] = getfloat;
        
getfloat = cache_get_field_content_float(0, "Y2"); TPDB[i][Y2] = getfloat;
        
getfloat = cache_get_field_content_float(0, "Z2"); TPDB[i][Z2] = getfloat;
        
getfloat = cache_get_field_content_float(0, "A2"); TPDB[i][A2] = getfloat;
        
getint = cache_get_field_content_int(0, "Interior2"); TPDB[i][Interior2] = getint;
        
getint = cache_get_field_content_int(0, "VirtualWorld2"); TPDB[i][VirtualWorld2] = getint;
        
        
format(String,sizeof(String),"[Teleport: %d]\n%s", i, TPDB[i][Description]);
        
TPEnter[i] = CreateDynamic3DTextLabel(String, 0xFFFFFFFF, TPDB[i][X1], TPDB[i][Y1], TPDB[i][Z1], 20, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, TPDB[i][VirtualWorld1], TPDB[i][Interior1], -1, 50.0);
        
TPExit[i] = CreateDynamic3DTextLabel(String, 0xFFFFFFFF, TPDB[i][X2], TPDB[i][Y2], TPDB[i][Z2], 20, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, TPDB[i][VirtualWorld2], TPDB[i][Interior2], -1, 50.0);
        }
        
cache_delete(result);
    }
} 
there is any way to make it work faster?
Reply
#2

Do you even know what're you trying to do with just a single integer and float for every value?
It'll keep changing its value to the new get querry. Use more floats for example.
PHP код:
new Float:getfloat[9]; 
Then using
PHP код:
getfloat[0] =
getfloat[1] = 
So on till 8.
And yes you can increase it by increasing the array size.
Reply
#3

Quote:
Originally Posted by Sunehildeep
Посмотреть сообщение
Do you even know what're you trying to do with just a single integer and float for every value?
It'll keep changing its value to the new get querry. Use more floats for example.
PHP код:
new Float:getfloat[9]; 
Then using
PHP код:
getfloat[0] =
getfloat[1] = 
So on till 8.
And yes you can increase it by increasing the array size.
Why would I do it? I don't need it since if you will take a look I store them at the teleport enum.
It's something with the MySQL, not variables
Reply
#4

Nevermind, didn't saw the part ahead of it.
So what do you mean by "making faster" ? Try to elaborate more.
Reply
#5

Well because it's gotta check 200 times if teleport exists it's lagging af and sticking the server for like 20 seconds
Reply
#6

PHP код:
stock ReloadTeleports()
{
    
mysql_tquery(sql, "SELECT * FROM `Teleports`", "ReloadTPS");
    return 
1;
}
forward ReloadTPS();
public 
ReloadTPS()
{
        new 
rows,fields;
        
cache_get_data(rows,fields);
        if(
rows)
        {
            for(new 
i = 0;i < rows;i++)
            {
                new 
String[64], query[128], Cache:result, getint, getstr[32], Float:getfloat;
                
getint = cache_get_field_content_int(i, "ID"); TPDB[i][ID] = getint;
                
cache_get_field_content(i, "Description", getstr); format(TPDB[i][Description], 32, getstr);
                
getfloat = cache_get_field_content_float(i, "X1"); TPDB[i][X1] = getfloat;
                
getfloat = cache_get_field_content_float(i, "Y1"); TPDB[i][Y1] = getfloat;
                
getfloat = cache_get_field_content_float(i, "Z1"); TPDB[i][Z1] = getfloat;
                
getfloat = cache_get_field_content_float(i, "A1"); TPDB[i][A1] = getfloat;
                
getint = cache_get_field_content_int(i, "Interior1"); TPDB[i][Interior1] = getint;
                
getint = cache_get_field_content_int(i, "VirtualWorld1"); TPDB[i][VirtualWorld1] = getint;
                
getfloat = cache_get_field_content_float(i, "X2"); TPDB[i][X2] = getfloat;
                
getfloat = cache_get_field_content_float(i, "Y2"); TPDB[i][Y2] = getfloat;
                
getfloat = cache_get_field_content_float(i, "Z2"); TPDB[i][Z2] = getfloat;
                
getfloat = cache_get_field_content_float(i, "A2"); TPDB[i][A2] = getfloat;
                
getint = cache_get_field_content_int(i, "Interior2"); TPDB[i][Interior2] = getint;
                
getint = cache_get_field_content_int(i, "VirtualWorld2"); TPDB[i][VirtualWorld2] = getint;
                
format(String,sizeof(String),"[Teleport: %d]\n%s", i, TPDB[i][Description]);
                
TPEnter[i] = CreateDynamic3DTextLabel(String, 0xFFFFFFFF, TPDB[i][X1], TPDB[i][Y1], TPDB[i][Z1], 20, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, TPDB[i][VirtualWorld1], TPDB[i][Interior1], -1, 50.0);
                
TPExit[i] = CreateDynamic3DTextLabel(String, 0xFFFFFFFF, TPDB[i][X2], TPDB[i][Y2], TPDB[i][Z2], 20, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 1, TPDB[i][VirtualWorld2], TPDB[i][Interior2], -1, 50.0);
            }
        }
        return 
1;
} 
Why looping through 200 tps while you just have to loop through just the created tps? Makes sense huh?
Reply
#7

Put this outside the loop with this simple modified query

PHP код:

mysql_format
(sql, query, sizeof query, "SELECT * FROM `Teleports`"); 
        
result = mysql_query(sql, query); 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)