Optimalizace kódu ORDA pomocí protokolování požadavků

Automaticky přeloženo z Deepl

Potřebujete někdy analyzovat provoz požadavků ORDA mezi klientem a serverem 4D? Někdy může chvíli trvat, než obdržíte odpověď od serveru, což vás může přivést k zamyšlení, zda je to způsobeno síťovým provozem nebo neoptimalizovaným požadavkem, který jste napsali! Naštěstí 4D v17 R6 umožňuje zjistit pravděpodobný důvod (důvody) tohoto zpoždění pomocí nových metod ORDA, které jsou k dispozici na serveru 4D v17 R6. ds objektu. Nejsou to jen ladicí funkce, ale umožňují také optimalizovat kód ORDA s lepším porozuměním odesílaným požadavkům.

Povolení protokolování požadavků ORDA

Na adrese startRequestLog() member method je velmi flexibilní, protože může zaznamenávat požadavky ORDA buď do souboru, nebo do paměti.

protokolovat do souboru

Chcete-li protokolovat do souboru, stačí zavolat startRequestLog() s File objektem, který udává, kam budou vaše požadavky ORDA protokolovány. V příkladu níže spustíme dotaz na neindexované pole, což může nějakou dobu trvat. Díky této nové funkci můžeme zkontrolovat dobu trvání našich požadavků:

C_OBJECT($employees;$file)
$file :=File("/PACKAGE/Logs/ORDARequests.txt")
$file .delete()
ds .startRequestLog($file)
$employees :=ds.Employee.query("jméno = :1"; "abcd") //firstname is not indexed

ds .stopRequestLog()

Každý požadavek je zaznamenán jako reprezentace objektu JSON.

Zde je uveden obsah souboru ORDARequests.txt:

[
{
..
.
"startTime": "2019-07-02T12:33:25.922Z",
"endTime": "2019-07-02T12:33:27.681Z",
"duration":4200,
"response":{ ...}
...
}
]

záznam do paměti

Každý požadavek může být zaznamenán jako objekt v kolekci, kterou lze načíst pomocí funkce getRequestLog() metodu member.

Protože vrací kolekci, můžete použít všechny dostupné metody kolekce.

C_OBJECT($first;$e)
C_COLLECTION (
$log)

ds .startRequestLog(10) // Only the last 10 requests will be kept in memory
$first :=ds.Persons.all().first()
$e :=ds.Persons.query("name=:1"; "Brown")
$log :=ds.getRequestLog()
ALERT ("Nejdelší požadavek trval: "+String($log.max("trvání"))+" ms")
ds .stopRequestLog()

vypnout protokolování požadavků ORDA

Chcete-li ukončit protokolování požadavků ORDA, stačí zavolat příkaz stopRequestLog() member metodu, jak je uvedeno v příkladech výše.

Avatar
• Product Owner • Marie-Sophie Landrieu-Yvert se připojila k programovému týmu 4D jako Product Owner v roce 2017. Jako Product Owner má na starosti psaní uživatelských příběhů a jejich převod do funkčních specifikací. Její úlohou je také zajistit, aby implementovaná funkce odpovídala potřebám zákazníka. Marie-Sophie vystudovala inženýrskou školu ESIGELEC a svou kariéru zahájila jako inženýrka v IBM v roce 1995. Podílela se na různých projektech (projekty údržby nebo výstavby) a pracovala jako vývojářka Cobol. Poté pracovala jako UML designer a Java developer. V poslední době byly jejími hlavními rolí analyzovat a psát funkčních požadavky a koordinovat obchodní a vývojové týmy.