Generell will ich Vorgänge in ein Protokoll schreiben und per E-Mail versenden.
Ich habe ein Modul welches Vorgänge in eine String Variable schreibt:
Beispiel:
05.04.2023, 14:45:23 OG Fenster Bad wurde geöffnet.
Diese String Variable wird archiviert. Das Archiv hält 90 Tage an Vorgängen vor.
Ich kann mir diese Daten auch aus dem Archiv holen und per E-Mail versenden.
Sind dieses Daten jetzt zu groß für die E-Mail (dort scheint es ein Limit zu geben), dann kommen die Daten nicht an.
Dachte ich mir, nutzte ich die tcpdf Library, nutzt Symcon auch im SymconReport Modul.
Hier ist es aber so, dass wenn die Datenmenge zu groß ist, wird auf der Symbox ein
Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 528384 bytes)
WIE willst du die Daten in das tcpdf Modul laden? Nur mal aus dem Bauch zwei Pseudo-Programme:
$ausg = "";
$werteArray = GetDataFromArchiv(_VARID_);
foreach($werteArray as $v){
$ausg.=$v."\n";
}
$pdf = new tcpdf();
$pdf->AddString($ausg);
Das braucht VIEL Speicher.
Alternativ:
$pdf = new tcpdf();
$werteArray = GetDataFromArchiv(_VARID_);
foreach($werteArray as $v);
$pdf->AddLine($v);
}
Das braucht ggf. deutlich weniger Speicher.
Und wie lädst du das Ergebnis dann in die PDF Bibliothek?
Schade, dass du erwartest, dass wir jetzt selber die Dokumentationen raussuchen. Habe ich dann mal gemacht und folgende Zeile gefunden:
Hier lädst du also die Daten, die schon für ein simples Versenden per E-Mail zu viel sind, gleich mehrfach vollständig in den Speicher.
Das es ein generelles Problem mit der Datenmenge innerhalb der Symbox gibt, und du das durch duplizieren nicht verbesserst sondern verschlimmerst, kam dir noch nicht in den Sinn?
Ggf. könnte es helfen die Daten im ersten Script (bzw. zwischendurch sauber den Speicher aufräumen) in eine Textdatei zu packen und diese im zweiten Schritt als Dateianhang zu versenden.
Dann muss ich mir das nochmal genauer ansehen. Ich hatte es jetzt nur quick und dirty ausprobiert und mir kamen Zweifel auf, ob der Ansatz mit der String Variable der Richtige ist.
Hatte ich auch schon daran gedacht, muss ich mal recherchieren, wie ich das umsetzte.
Wie löst du denn generell sowas oder hast nicht diesen Anwendungsfall.