[Modul] iCal Calender in IP Symcon lesen und verarbeiten

Hallo Burkhard, seid deinem Update werden mir nicht mehr die Termine im Kalender Angezigt. Wenn ich Ihn neu Laden will sagt er „Es wurden keine Einträge gefunden“.

Ich hab mir das Modul auch installiert, weil ich mir eine Erinnerung über Alexa einrichten wollte. Zusätzlich hab ich das Skript hier kopiert
Kalenderübersicht, Terminübersicht als Tabelle (ohne Meldevariable)
Läuft auch soweit, nur bekomme ich bei der Ausführung des Skripts folgende Fehlermeldung:

Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 65536 bytes) in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\autoload.php on line 65

Ich hätte dann schon versucht den Spezialschalter „ServerHardQueueBytesLimit“ auf 64mb zu erhöhen hilft aber auch nichts. Ich bekomme nach wie vor die selbe Fehlermdlung.
Mir ist auch aufgefallen, dass, wenn ich bei der Intanz „ICAL CALENDAR READER“ auf den Button „Kalender laden“ klicke bekomme ich folgende Meldung

<br />
<b>Fatal error</b>:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 65536 bytes) in <b>C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\autoload.php</b> on line <b>65</b><br />

Das System läuft auf einer virtuellen Win10 Home mit 4Gb vRAM. Sollte reichen.

Hi,
welchen Vor- bzw. Nachlauf (Cache-Größe) hast Du eingestellt?

Ralf

Das was IPS bei der Installation einstellt. Ich hab da nicht reingefummelt. Testweise hab ich in der php.ini von 32mb auf 128mb hochgedreht. Bringt aber auch nichts. BTW, wo sehe ich die von dir erwähnten werte?

Hi,
bei den eingerichteten Kalender-Instanzen und dann bei Synchronisation.

Für meinen Geburtstagskalender habe ich +/- 180 Tage drin. Für meinen Terminkalender habe ich -14 und +60 Tage drin.

Ralf

Ich vermute, dein gelesener Kalender hat zu viele Einträge. Leider kann der Kalender nur als Gesamtheit gelesen und geparst werden.

Du müsstest das memory_limit in der php.ini erhöhen. Z.B.

memory_limit=64M

[QUOTE=bumaas;440177

memory_limit=64M

[/QUOTE]
Ich hab schon 128MB drinnen, geht auch nicht.
Eine Änderung von 30 auf 3 Tagen bei beiden Cache Werten ändert auch nichts.
Noch was, ich hab in der php.ini auf 128mb geändert. Nach dem Start von IPS wurde es wieder auf 32 zurückgestellt. 64MB werden akzeptiert.
Bekomme aber trotzdem diese Fehlermeldung

Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 135168 bytes) in C:\ProgramData\Symcon\modules\.store\de.bumaas.ical\libs\iCalcreator-master\src\Vcalendar.php on line 367

Zumindest sieht man hier schon, dass nun das neue Limit überschritten wird („67108864 bytes exhausted“)

Ich habe aber keine Ahnung, wer die 128M wieder auf 32M zurückstellt :eek:

Gibt es einen Hinweis im Logfile?

Hast du mal versucht, das Limit zu deaktivieren?

memory_limit=-1

Ich hab es jetzt mit 128M und 256M probiert. Wird jedesmal auf 32M geändert. Im Log hab ich nichts gefunden. Sollte ja, wenn überhaupt, am Beginn stehen. Wird sicher beim Starten geändert, weil der Dienst noch nicht vollständig geladen ist, aber die Änderung schon passiert ist.
Interessanterweise funktioniert -1 … Und dann funktioniert auch das Skript.
In der Prozessliste steigt der ips dienst kurz auf etwa 128mb Speichernutzung.
Sogar mit 30 Tagen vor und zurück steigt der Speicherverbrauch nicht über 130mb. Mir ist das Verahlten und die Fehlermelund schleierhaft.

Das kann ich nachvollziehen:

auch bei mir werden als memory_limit 64M und -1 akzeptiert, aber Werte >=128M werden auf 32M zurückgesetzt. @paresy: hast du da eine Erklärung für?

-1 ist eigentlich eine unglücklicher Wert. Besser wäre es, wenn man ein explizites Limit angeben könnte.

Wir validieren dies, damit man dies nicht exorbitant hoch setzen kann. Denn: Wenn alle PHP Threads 128MB verwenden dürfen und du z.B. 50 Threads hast, brauchst du im Peak 6400 MB RAM. Falls du dies z.B. unter Linux dann nicht hast, entsorgt der Kernel dein Prozess…

Da wir mittlerweile aber immer mehr RAM haben, würde ich das Limit zum nächsten Update auf max. 128MB setzen anstatt der aktuellen 64MB. Den -1 Workaround sperre ich in dem Zuge ebenfalls, da dieser sehr unglücklich ist.

Hast du mal versucht nur für dein Skript das Memory Limit zu erhöhen?


ini_set('memory_limit', $limit . 'M');

paresy

Ah, ihr seid es :slight_smile:

Da wäre vielleicht ein Hinweis auf das Maximum im Logfile nicht schlecht, wenn der Wert zurückgesetzt wird.

Ich setze jetzt mal - da das Problem beim Kalender schon häufiger aufgetreten ist - das Limit für das Modul auf 256M. Mal sehen, wie das ankommt.

public function __construct($InstanceID)
{
    ini_set('memory_limit', '256M');
    parent::__construct($InstanceID);
}

@hfichtinger: willst du mal die Beta ausprobieren?

@hfichtinger: willst du mal die Beta ausprobieren?

Werde ich machen, sobald mein Netzwerkscanner fertig ist :wink:

Hallo, wird die Doku irgendwann geupdatet? Aktuell soll man ja alles in die „Calender“ Instanz bringen aber nirgends steht wie :slight_smile:

Die iCal Abfrage bei mir klappt, sehe die Daten meiner Stadt.
Eingerichtete Meldevariablen geben auch ein false/true zurück, nur was mach ich damit :confused:

Die Doku ist aktuell. Kannst du genauer beschreiben, was dir fehlt?

Hi,
die Variablen kann man als Trigger für Scripte benutzen, z.B. Mail schicken oder Alexa reden lassen.

Ralf

Hallo Bumaas, wie schon beschrieben sind seit deinem Update alle meine Einträge verschwunden denn die Meldung die er mir anzeigt lautet(Es wurden keine Einträge gefunden). Hier ein auszug vom Debug wo meiner Meinung nach alles geladen wird. Habe die Kalender Cache probeweise auf 5 und 10 Tage gesetzt und auch die gesamte Cache auf 64M hoch. Hat jemand noch eine Idee woran es nun liegen kann ?

Hallo flamedoil,

bei dir scheint der Kalenderparser Probleme mit einer URL zu haben. Der Eintrag „message:%3C00…“ ist in einem deiner Kalendereinträge als URL hinterlegt.

Du könntest dir den Inhalt von curl_result einmal näher ansehen um herauszufinden, welcher Kalendereintrag der Verursacher ist. Oder du schickst mir die Ausgabe einmal per Email zu, dann schaue ich mir das mal an.

Burkhard

Hallo Burkhard,

alle iCal Calendar Reader-Instanzen gebe beim IP-Symcon-Neustart folgenden Fehler aus:

20.11.2020, 19:35:21 | KernelMT             | InstanzManager: Fehler bei Instanz #21983, Meldung IPS_KERNELMESSAGE: Array
(
)

Wird nichts „schlimmes“ sein, ist mehr als Hinweis zu verstehen. Ich vermute das bei Deinen Messages vielleicht irgendwo ein „Echo“ drin ist?

Joachim

Hallo Joachim,

da ist mir leider eine Testanweisung print_r reingerutscht. Sie kommt aber nur beim ApplyChanges zum Tragen. Die muss natürlich wieder raus :slight_smile:

Burkhard