mariadb async query: Difference between revisions

From Onset Developer Wiki
mNo edit summary
Line 20: Line 20:
       for k, v in pairs (GetAllPlayers()) do
       for k, v in pairs (GetAllPlayers()) do
           if GetAllPlayers() == true then
           if GetAllPlayers() == true then
          local query = mariadb_prepare(sql, "SELECT * FROM accounts WHERE id = '?';",
              local query = mariadb_prepare(sql, "SELECT * FROM accounts WHERE id = '?';",
          PlayerData[v].accountid)
              PlayerData[v].accountid)
          mariadb_async_query(sql, query, GetPlayerTime, v)  
              mariadb_async_query(sql, query, GetPlayerTime, v)  
           end
           end
       end  
       end  
Line 30: Line 30:


function GetPlayerTime(player)
function GetPlayerTime(player)
local result = mariadb_get_assoc(1)
  local result = mariadb_get_assoc(1)
local playtime = math.tointeger(result['time']) -- total time played on the server without session time.
  local playtime = math.tointeger(result['time']) -- total time played on the server without session time.
PlayerData[player].time = math.floor(PlayerData[player].time + (GetTimeSeconds() - PlayerData[player].play_time)) -- session play time.
  PlayerData[player].time = math.floor(PlayerData[player].time + (GetTimeSeconds() - PlayerData[player].play_time)) -- session play time.
PlayerData[player].play_time = GetTimeSeconds()
  PlayerData[player].play_time = GetTimeSeconds()
return PlayerData[player].time + playtime -- returns the total play time on the server.
  return PlayerData[player].time + playtime -- returns the total play time on the server.
end
end
</syntaxhighlight>
</syntaxhighlight>
{{RelatedFunctions}}
{{RelatedFunctions}}
__EDIT_ME__
__EDIT_ME__

Revision as of 15:53, 26 January 2020

mariadb async query

Type: Function
Context: Server
Introduced: v1.0

NOTICE

This function is provided by the official MariaDB plugin.

Description

Executes a query in different parallel threads. Execution of order can not be guaranteed. Better use mariadb_query if you are unsure about it.

Syntax

mariadb_async_query(handle, query_str [, callback_func, callback_args...])

Parameters

  • handle
    Connection handle.
  • query_str
    The query to be executed.
  • callback_func (optional)
    The function that will be called when the query was executed.
  • callback_args (optional)
    Multiple arguments to pass to the callback_func.

Return Value

  • Returns true if the query was successfully queued.

Example

function GetCurrentPlayTime(player)
   CreateTimer(function(player)
       for k, v in pairs (GetAllPlayers()) do
           if GetAllPlayers() == true then
              local query = mariadb_prepare(sql, "SELECT * FROM accounts WHERE id = '?';",
              PlayerData[v].accountid)
              mariadb_async_query(sql, query, GetPlayerTime, v) 
           end
       end 
   end, 15000, player)
end
AddEvent("OnPackageStart", GetCurrentPlayTime)

function GetPlayerTime(player)
   local result = mariadb_get_assoc(1)
   local playtime = math.tointeger(result['time']) -- total time played on the server without session time.
   PlayerData[player].time = math.floor(PlayerData[player].time + (GetTimeSeconds() - PlayerData[player].play_time)) -- session play time.
   PlayerData[player].play_time = GetTimeSeconds()
   return PlayerData[player].time + playtime -- returns the total play time on the server.
end

See also

__EDIT_ME__