Transaktionscode des Prozesswörterbuchs ausführen (proc_dict_run)
Deklaration
Rückgabeinhalt, Fehlermeldung = proc_dict_run(Transaktionscode)
Parameter
- Transaktionscode
String, auszuführender Lua-Transaktionscode
Rückgabewerte
- Rückgabeinhalt
String | nil; bei erfolgreicher Ausführung der vom Code zurückgegebene Wert, bei Fehler nil - Fehlermeldung
Text | nil; bei erfolgreicher Ausführung nil, bei einem Fehler im ausgeführten Code die Fehlermeldung
Hinweise
Diese Funktion ist erst in Versionen nach 20250427 verfügbar.
Alle Prozesswarteschlangen-Wörterbücher mit dem Präfix "xxtouch." oder "1ferver." bleiben erhalten.
Führt den Transaktionscode des Prozesswörterbuchs aus; während der Ausführung des Transaktionscodes wird der Zugriff anderer Threads auf proc_-Funktionen blockiert.
Eine einzelne Ausführung darf höchstens 1000000 Zeilen umfassen.
Bei erfolgreicher Ausführung kann dieser Lua-Code einen Zeichenkettenwert zurückgeben.
Dieser Zeichenkettenwert wird als Rückgabewert an den Aufrufer zurückgegeben.
Wenn der Code nil zurückgibt, wird dem Aufrufer eine leere Zeichenkette zurückgegeben.
Bei fehlgeschlagener Ausführung werden nil und eine Fehlermeldung zurückgegeben.
Für die Ausführung des Transaktionscodes können die folgenden Module und Funktionen verwendet werden
base-Modul (ohne require)
table-Modul
string-Modul
math-Modul
utf8-Modul
bit32-Modul
json-Modul
os.time()
os.clock()
sys.mtime()
utils.gen_uuid()
proc_put(key, value)
proc_get(key)
proc_queue_push_back(key, value)
proc_queue_push_front(key, value)
proc_queue_pop_front(key)
proc_queue_pop_back(key)
proc_queue_pop_value(key, value)
proc_queue_count_value(key, value)
proc_queue_clear(key)
proc_queue_read(key)
proc_queue_size(key)
Beispiel
function proc_inc(key, int_value)
return proc_dict_run(string.format([[
local key = %q
local value = %d
local ov = proc_get(key)
if ov == '' then
ov = 0
else
ov = tonumber(ov)
end
if not ov then
error('not a number')
end
proc_put(key, tostring(ov + value))
return ov
]], key, int_value))
end
for i = 1, 20 do
nLog(proc_inc('haha', 10))
end