[Modul] iCal Calender in IP Symcon lesen und verarbeiten

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

Hallo Burkhard,

sag ’ mal, hast du hierfür inzwischen eine Lösung oder Idee, wie ich den Kalender ans laufen bekomme.
Das ist eines meiner Probleme, welches ich bis heute noch nicht gelöst bekommen habe.
Ich habe das Modul mal komplett gelöscht und wieder neu installiert, aber immer noch der selbe Fehler.

Kann das mit der Größe des Kalender zusammen hängen, hier werden wohl knapp 1,2MB geladen.
Wenn ich das Debug so sehe wird auch alles aus 2019 noch geladen, ist das richtig?

Danke u. Grüße,
Doc

Kannst du mal die aktuelle Beta des Moduls ausprobieren?

Das scheint jetzt soweit durchzulaufen, allerdings mit den Meldungen wie unten.
Einmal beim Speichern von Änderungen und einmal beim Abrufen des Kalenders.

Kann es sein, dass das System (Raspi) jetzt sehr langsam in der Zeit der Auswertung wird?
Bis alle Einträge durch sind scheint es ca. 1-2 Minuten zu dauern.
Auch gibt es Meldung wie „… to far in the future …ignore“ bei Kalendereinträgen aus 2019.

Grundsätzlich freue ich mich aber erst mal, das es jetzt überhaupt mal funktioniert.

Grüße,
Doc

Die erste Meldung war noch ein Fehler. Das habe ich nun korrigiert.

Die zweite Meldung gibt dir einen Überblick über die gelesenen Einträge. Aber seltsam, dass die Überschrift „The following dates are read:“ bei dir nicht übersetzt ist. Hast du eine besondere Spracheneinstellung aktiv?

Das hängt von deiner Speicherausstattung ab. Der Kalenderverarbeitung ist schon sehr speicherdurstig.

Die Meldung sollte eigentlich nur bei Einträgen kommen, deren Startdatum zu weit in der Zukunft liegt und nicht bei Einträgen aus der Vergangenheit.

Da könntest du mir vielleicht Debugausgaben von zukommen lassen.

Burkhard

Hi,

eine besondere Spracheinstellung habe ich eigentlich nicht.
Ist ein Raspi mit 4GB Speicher.

Ich denke die Verzögerungen kommen vom Debug Fenster. Ich habe das Limit von 100 Einträgen aufgehoben, um genau zu sehen was passiert. Ich glaube wenn ich das Fenster schliesse, läuft es flüssiger. Ich werde mal testen.

Die Meldung „too far in the future“ kommt jetzt nicht mehr, auch sehe ich keine Einträge aus 2019 mehr?
Habe ich mir vielleicht auch nur eingebildet … :confused:

Die Änderungen, die du gemacht hast, sind aber noch nicht öffentlich, oder?

edit: gerade gesehen, jetzt ist ein Update verfügbar …