wie groß darf in IPS 4 der Wert einer String-Variablen sein?
Hintergrund: Ich möchte Daten (JSON-String) in regelmäßigen Abständen an einen Web-Server senden. Sofern das senden fehl schlägt, sollen diese Daten in IPS gepuffert werden. Wenn ich diese hintereinander in eine Stringvariable als Puffer schreibe, könnte diese, je nach Zeitraum, in dem die Verbindung zum Server nicht verfügbar ist, recht lang werden.
Oder gibt es andere Möglichkeiten dies umzusetzen?
Limitationen IP-Symcon :: Automatisierungssoftware
Ist aber grundsätzlich eine eher schlechte Idee, weil jede Änderung der Variable einmal komplett durch IPS und alle daran hängenden Webfronts bzw. IPSview etc… gejagt wird.
Momentan mache ich das aber in den Modulen auch so… dort soll noch mal was passieren in der Richtung eines Buffers.
Wenn es nicht zu zeitkritisch ist, schreibe den String doch in eine Datei.
Wieso denn das?
ich speichere bei fast jedem Skriptaufruf durch einen Event mit „SetValueString(IPSObjectID, serialize($IrgendEinArray))“ ganze Arrays ab und habe noch nie einen Fehler oder Performance-Verlust festgestellt.
Und wenn die Variable auch noch mit Hidden attribusiert ist, dürfte es die Webfronts garnicht stören.
Doch auch hidden Variablen werden übertragen.
Habe ich sogar schon mal als genutzt um JavaScript ins WF zu schmuggeln, ohne das die StringVar sichtbar ist.
Das bläht alles den Snapshot auf, und wird zusätzlich noch durch die interne IPS-Nachrichtenschlange gejagt.
Letzteres konnte man gut im Delphi-SDK sehen.
Alternativ steht ja die RegVar-Instanz mit ihrem Buffer zur Verfügung. Die betrifft das nämlich nicht. Ist aber auch deutlich kleiner vom Speicher.
Ich würde die Hinweise in der Doku schon ernst nehmen.
Gerade in Anbetracht der relativ schwachen HW der PIs.
Wobei das ganze natürlich relativ zu sehen ist, ich glaube ein paar kB mehr oder weniger ist egal.
Michael