mariadb async query

From Onset Developer Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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. Order of execution cannot 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