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 = '?';", | |||
PlayerData[v].accountid) | |||
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 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 | end | ||
</syntaxhighlight> | </syntaxhighlight> | ||
{{RelatedFunctions}} | {{RelatedFunctions}} | ||
__EDIT_ME__ | __EDIT_ME__ |
Revision as of 15:53, 26 January 2020
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__