Datenausgabe zu groß

Hallo Leute,

ich habe in letzter Zeit versucht größere Datenmengen über den IP-Symcon Webserver auszugeben, allerdings bin ich leider auf Limitationen gestoßen, wie die Fehlermeldung: Output-Buffer exceeds 1024kb. Operation halted.
Dieser Fehler, so nehme ich an, wird aus meinem zu großen HTML-String kommen, wie in Limitationen — IP-Symcon :: Automatisierungssoftware beschrieben.
Genauso hatte ich schon Probleme mit dem maximalen Speicher pro PHP-Thread, da ich diesen nur auf 64Mb setzen kann.
Ich weiß, dass ich weniger Datenpunkte ausgeben könnte, jedoch geht mir dann etwas von der Auflösung verloren.
Mich würde es nun interessieren ob man diese Limitationen villeicht doch erhöhen könnte?
Oder gibt es sonst einen workaround, damit alle Daten angezeigt werden?

RudiSym

Hallo RudiSym,

wie du in der von dir verlinkten Seite lesen kannst sollte eine String-Variable nicht größer als 8kb sein, mit dem Lösungsvorschlag größere Inhalte auszulagern. Genau das solltest du auch tun.

Du kannst zum Beispiel Inhalte in eine html Datei in deinem Userordner schreiben und diese Datei dann im html-string z.B. als iFrame laden.

Gruß,
gucky

Hallo gucky,

Danke für den Tipp mit dem auslagern der Daten. Habe ich wohl in der Doku überlesen.:o
Die HTML-Dateien sind nur leider statisch und müsste ich bei jeder Aktualisierung der Daten neu erstellen oder überschreiben.
Gibt es da noch andere Möglichkeiten?
Momentan steht in meiner IPS String Variable ein iFrame, welcher ein php Skript mit einem zu großen echo String aufruft.

RudiSym

Hallo,

entweder erstellst du die Datei bei jedem Aufruf neu oder du erstellst eine php-Datei in deinem user-Ordner die immer den gewünschten Inhalt zurückliefert. Dein iFrame würde dann so aussehen:


<iframe src="/user/myScript.php" width="300" height="300">
 <p>Your browser does not support iframes.</p>
</iframe>

In dem Skript kannst du dann auch auf IP-Symcon zugreifen. Schau dir einfach mal die beiden php Dateien unter \webfront\data\ an.

Gruß,
gucky

Hallo gucky,

ich habe mich ein wenig mit dem Fehler befasst und glaube nun endlich verstanden zu haben warum und wann er auftritt.
Ich verwende den Highchart Framework von khc (Highcharts V3.00) und habe somit in meinen IPS HTML String Variablen folgendes:

<iframe src='./user/IPS-Highcharts.php?ScriptId=39957'  width=100% height=100% frameborder='0' scrolling='no' ></iframe>

In dem IPS-Highcharts.php wird dann allerdings IPS_RunScriptWaitEx() ausgeführt und das aufgerufene Skript dann den HTML String mittels echo ausgibt (Skript: 24812.ips.php zeile:64). Dadurch wird wieder der „Output-Buffer exceeds 1024kb. Operation halted“ Fehler ausgegeben, da der String von einem IPS internen Skript ausgegeben wird.

Ich könnte jetzt natürlich meinen Code mit den Diagrammen neu schreiben, in nicht in IP-Symcon eingefügte Skripte schreiben und das IPS_RunScriptWaitEx() weglassen.
Allerdings würde ich gerne Fragen, ob es nicht vielleicht doch eine einfachere Lösung gibt?
Die PHP Skripte sind im Anhang zu finden.
Danke für deine bisherigen Bemühungen.

RudiSym

scripts.rar (18.5 KB)

Hallo RudiSym,

an der Limitation lässt sich nichts machen. Du kannst in dem Skript 24812 in Zeile 64 den Content in eine Datei schreiben und und dann über echo den Pfad auf die Datei (z.B. in einem weiterem iFrame) zurück geben.

Gruß,
gucky