Dateien im Cache verschwinden

Fragen zur Installation von CONTENIDO 4.10? Probleme bei der Konfiguration? Hinweise oder Fragen zur Entwicklung des Systemes oder zur Sicherheit?
bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Dateien im Cache verschwinden

Beitrag von bodil » Fr 20. Aug 2021, 22:29

Liebe Gemeinde!
Ich habe da ein Problem nit dem Mandanten-Cache. Für ein eigenes Modul habe ich ein eigenes Unterverzeichnis eingerichtet, aus dem mir ständig Dateien verschwinden. Auch das Hauptverzeichnis ist oft unterschiedlich voll. Kann mir das jemand erklären? Räumt da irgendein Skript auf? Kann man das abstellen?
Ratlos grüßt aus dem hohen Norden
bodil

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von Faar » Di 24. Aug 2021, 13:30

:shock:
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

xmurrix
Beiträge: 3143
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von xmurrix » Di 24. Aug 2021, 23:13

Hallo bodil,

Im Backend kann man unter "Administration > System > Bereinigung" den Cache der Mandanten leeren, dabei wird der gesamte Cache-Ordner geleert.

Beim Editieren von Modulen im Backend wird die selbe Funktion zum Leeren des Cache-Ordners des aktuellen Mandanten ausgeführt. Das ist wohl nötig, um den Cache zu aktualisieren.

Vermutlich ist beim Speichern von Modulen der Aufruf der clearClientCache() Funktion in der cSystemPurge Klasse der Grund für das Verschwinden von Dateien aus dem Cache.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.

bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von bodil » Mi 25. Aug 2021, 07:32

Hallo xmurrix!
Das schau ich mir mal an! Vielen Dank!
Herzliche Grüße!
Bodil

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von Oldperl » Mi 25. Aug 2021, 10:24

Servus Bodil,

Du könntest einfach eine leere Datei mit dem Namen .keep in das Verzeichnis legen, dann sollte es nicht gelöscht werden. Um die Bereinigung der Dateien darin musst Du Dich dann aber selbst kümmern. CONTENIDO lässt solche Verzeichnisse nämlich grundsätzlich in Ruhe.

Oder Du setzt eine Systemproperty dafür.

system | purge-dirstoexclude-withfiles | [Kommaseparierte Liste von Dateien]

wobei diese Liste von Dateien die Standardliste in der Klasse cSystemPurge dann ersetzt.

Code: Alles auswählen

/**
     * These directories and the included files should not be cleared.
     *
     * @var array
     */
    private $_dirsExcludedWithFiles = array(
        '.',
        '..',
        '.svn',
        '.cvs',
        '.htaccess',
        '.git',
        '.gitignore',
        '.keep',
    );
Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von bodil » Mi 25. Aug 2021, 15:19

Hi Ortwin!
Ich bin immer wieder überrascht, was Contenido alles kann.
In meinem Fall brauche ich ein Unterverzeichnis im Cache, das nicht geleert wird. Da nehme ich wohl am besten die Variante mit der .keep-Datei. Vorrübergehend habe ich mein Verzeichnis direkt in den Mandantenordner gelegt, aber im Cache ist es definitiv besser aufgehoben.
Vielen Dank und Gruß aus dem hohen Norden!
Bodil

Faar
Beiträge: 1915
Registriert: Sa 8. Sep 2007, 16:23
Wohnort: Brandenburg
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von Faar » Mi 25. Aug 2021, 17:24

bodil hat geschrieben:
Mi 25. Aug 2021, 15:19
Ich bin immer wieder überrascht, was Contenido alles kann.
Und ich bin immer wieder überrascht, was Ortwin alles weiß. :wink:
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.

bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von bodil » Fr 27. Aug 2021, 14:55

Das sollte meine Aussagen selbstverständlich implizieren.

bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von bodil » Di 2. Nov 2021, 22:37

Ich stelle fest, dass der oben von Ortwin beschriebene Mechanismus bei mir so nicht funktioniert, wie er sollte. Ich habe im cache die Datei .keep, laut class.purge.php UND laut Systemeinstellungen sollte die das Leeren des Caches verhindern, aber mit jeder Modul-Änderung wird der Cache komplett leergeräumt - nur die keep-Datei belibt übrig. (Contenido 4.10.1)
Ich habe das hier alles in einem produktiven System und will das darin nicht weiter debuggen, installier aber bei Gelegenheit ein eigenes Contenido, um das zu überprüfen. Kann es sein, dass das ein Bug ist, der bisher niemandem aufgefallen ist? Es fühlt sich ein bisschen so an.
Grüße aus dem hohen Norden!
Bodil

marcus.gnass_4fb
Beiträge: 87
Registriert: Do 26. Apr 2012, 23:02
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von marcus.gnass_4fb » Mi 3. Nov 2021, 09:18

Moin! Vielleicht noch als kleine Randnotiz: die Datei .keep dient der Versionierung mittels Git.

Git kann nur Dateien versionieren, aber keine Verzeichnisse. Damit ein "leeres" Verzeichnis versioniert wird, kann man in dieses eine leere Datei legen, die von Git versioniert wird und damit auch implizit das Verzeichnis. Wie die Datei heißt ist eigentlich egal. Wir hatten uns intern auf .keep geeinigt. Beim Bereinigen von Dateien wird die Datei .keep standardmäßig ausgenommen, damit sie bei einem "git pull" nicht immer wieder erzeugt bzw. bei einem "git commit" nicht im Git-Repository gelöscht wird.
Du könntest einfach eine leere Datei mit dem Namen .keep in das Verzeichnis legen, dann sollte es nicht gelöscht werden.
Das konnte ich auf Anhieb nicht aus dem Code herauslesen (vielleicht hab ich es aber auch überlesen). Im Prinzip hat dieses "keep" aber nichts mit dem Bereinigen von Caches zu tun.

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von Oldperl » Mi 3. Nov 2021, 11:06

Hallo Marcus,

Zeile 39 ff :arrow: https://github.com/CONTENIDO/CONTENIDO/ ... .purge.php

Ergänzung: Hat man die Bereinigung einmal aufgerufen, so wird dieses Array serialisiert in den Systemeinstellungen (siehe Screenshot) abgelegt, und zukünftig, solange der Eintrag existiert, von dort genommen. Daher auch immer dort schauen, ob die Datei dort angegeben ist.
_CONTENIDO_4.10.1_localhost_CONTENIDO_contenido_-_2021-11-03_11.12.13.png
_CONTENIDO_4.10.1_localhost_CONTENIDO_contenido_-_2021-11-03_11.12.13.png (12.79 KiB) 4147 mal betrachtet
Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von Oldperl » Mi 3. Nov 2021, 11:25

Hallo Bodil,
bodil hat geschrieben:
Di 2. Nov 2021, 22:37
Kann es sein, dass das ein Bug ist, der bisher niemandem aufgefallen ist? Es fühlt sich ein bisschen so an.
Nun, ich denke es ist ein Bug. Beim Ändern von Modulen werden die Funktionen in den Dateien functions.mod.php und functions.con.php genutzt. Dabei werde Dateien im Cache offensichtlich direkt gelöscht, ohne den Einsatz der Bereinigungsklasse. Dann greifen natürlich auch die dort gemachten Vorgaben nicht.
Hier muss man nochmal etwas Zeit investieren, und alle Funktionen in CONTENIDO, die Dateien im Cache bearbeiten bzw. bereinigen, dementsprechend betrachten und einheitlich zentral über die Klasse cSystemPurge behandeln.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

bodil
Beiträge: 340
Registriert: Fr 7. Okt 2011, 04:10
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von bodil » Mi 3. Nov 2021, 16:29

Hi Ortwin, hi Marcus,
wenn ich es richtig verstehe, gibt es da zweierlei: meinen Wunsch, dass der Cache nicht geleert wird und die .keep-Datei deren Sinn eigentlich war, dass das (Cache-)Verzeichnis nicht gelöscht wird.
Ich für meinen Teil muss deswegen mit der Programmierung etwas umdisponieren, weil ich mich bisher darauf verlassen hatte, die Leerung des Caches verhindern zu können, aber das ist kein Ding.
Aber krass ist es schon: wenn ich ein Modul änder, ist der Cache leer. (Gefühlt) Tausende gecachte Bilder: weg! Müssen alle (grundlos) neu generiert werden. Wenn ich da an die Kunden mit den Riesenbildern und dem Mini-Arbeitsspeicher denke, wird mir ganz anders. Da wäre eine Lösung mit etwas mehr nennen wir es mal Feingefühl aus meiner Sicht besser. Ich schau mal, dass ich mich da reinfuchse, vielleicht finde ich ja was. So weit ich bisher gesehen habe, ist da die cSystemPurge schon im Einsatz, es wirkt nur, als werde sie etwas ziellos bedient.
Vielen Dank euch beiden!
Bodil

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von Oldperl » Mi 3. Nov 2021, 19:10

Servus,

nun, das ist ein generelles Problem bei CONTENIDO. Vielfach ist nicht mal bekannt, wo und wann welche Funktion auf Bereiche zugreift. Oft wurden auch funktionelle Änderungen/Verbesserungen in einem Bereich eingebracht, dabei aber nicht alle Auswirkungen auf andere Bereiche bedacht oder geprüft.
Auch hier sollten wir zukünftig unser Augenmerk darauf legen dies besser zu planen und umzusetzen. Ich denke auch, dass wir dabei den Core von CONTENIDO noch mehr entschlacken können.
Dazu wären aber in allen Bereichen Ablaufpläne mit den entsprechenden Querverweisen gut, wobei das eine recht umfangreiche Aufgabe ist.
bodil hat geschrieben:
Mi 3. Nov 2021, 16:29
Da wäre eine Lösung mit etwas mehr nennen wir es mal Feingefühl aus meiner Sicht besser. Ich schau mal, dass ich mich da reinfuchse, vielleicht finde ich ja was. So weit ich bisher gesehen habe, ist da die cSystemPurge schon im Einsatz, es wirkt nur, als werde sie etwas ziellos bedient.
Da gebe ich Dir recht. Toll wenn Du Dich da "reinfuchsen" willst. Eventuell kannst Du in dem Zusammenhang auch ein wenig die entsprechende Doku auf https://docs.contenido.org/ ergänzen bzw auf einen aktuellen Stand bringen.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

marcus.gnass_4fb
Beiträge: 87
Registriert: Do 26. Apr 2012, 23:02
Kontaktdaten:

Re: Dateien im Cache verschwinden

Beitrag von marcus.gnass_4fb » Mi 3. Nov 2021, 20:10

Antwort an mich selber ;) :
Oldperl hat geschrieben:
Mi 3. Nov 2021, 11:06
Zeile 39 ff ...
Dass dort die .keep aufgeführt wird hab ich gesehen. Wenn man aber nach $this->_dirsExcludedWithFiles sucht findet man deren Verwendung zum einen im Konstruktor, vor allem aber in der Methode cSystemPurge::clearDir().
Du könntest einfach eine leere Datei mit dem Namen .keep in das Verzeichnis legen, dann sollte es nicht gelöscht werden.
Nachdem ich mir die o.g. Methode mal genauer angesehen habe hab ichs dann auch gefunden:

Code: Alles auswählen

foreach ($dirContent as $sContent) {
    if (in_array($sContent, $this->_dirsExcludedWithFiles)
    || in_array($dirContent, $this->_dirsExcluded)) {
        $bCanDelete = false;
        break;
    }
}
Und später dann:

Code: Alles auswählen

if (true === $bCanDelete) {
    cDirHandler::remove($dirPath);
}

Antworten