Antwort #7 am: 27. November 2018, 16:01:48
...
Wenn man oft im Adminbereich unterwegs ist, ist es aber auch ein leichtes, mal schnell die 2 "Cache leeren" Buttons zu drücken zum aufräumen.
...
Naja, daß das Verzeichnis nicht immer voller läuft sollte schon automatisch funktionieren.
Das Problem beginnt schon bei den irreführenden und/oder ungenauen Bezeichnungen und Erklärungen im Backend.
Was ich eruiert habe:
- "Cache benutzen" (= interne Konstante USE_CACHE) sollte eigentlich für das Smarty-Engine-Caching gedacht sein wenn ich mir den Code anschaue.
Es gibt diesen Code in der /includes/application_top.php:
function CacheCheck
() { if (USE_CACHE
== 'false') return false; if (!isset($_COOKIE['MODsid'])) return false; return true;} und es wird in so gut wie allen wichtigen Dateien die eine Ausgabe in eine Smarty-Template-Datei haben abgefragt
if (!CacheCheck()) {
$module_smarty->caching = 0;
...
}
Das scheint allerdings nicht zu funktionieren, denn auch wenn man "Cache benutzen" deaktiviert werden Cache-Files in /templates_c/ geschrieben.
Wenn "Cache benutzen" allerdings aktiviert ist wird der /cache/-Ordner zusätzlich mit Smarty-Cache-Files gefüllt. Diese sind im Aufbau ähnlich denen im Ordner /templates_c/, sind jedoch *.txt anstatt *.php-Files.
- Die "Cache Lebenszeit" (= interne Konstante CACHE_LIFETIME) wird für die Smarty-Template-Engine benutzt, nicht für den "DB Cache" (= interne Konstante DB_CACHE).
- "Prüfe ob Cache modifiziert" (= interne Konstante CACHE_CHECK) bezieht sich ebenfalls auf die Smarty-Template-Engine.
- Die Lebenszeit für den "DB CACHE" wird mittels "DB Cache Lebenszeit" (= interne Konstante DB_CACHE_EXPIRE) bestimmt.
Fragen und Anregungen:
- Was ist mit dem Template-Caching los ?
Wieso gibt's /template_c/ und bei Aktivierung von "Cache benutzen" (= interne Konstante USE_CACHE) zusätzlich /cache/-Files ?
Wenn das einen mir verborgenen Sinn hat sollte man nicht dasselbe Verzeichnis wie für den "DB Cache" nehmen. - Die irreführenden und/oder ungenauen Bezeichnungen und Erklärungen im Backend sollte korrigiert/verbessert werden.
- Wenn "Cache Engine" auf 'File' steht, was ich annehme weil es ansonsten das Problem des Volllaufens des Ordners /cache/ nicht gäbe, müsste das eigtl. perfekt funktionieren.
Das Beschreiben der Files wird nämlich in der Funktion fopen() mit dem Parameter w+ geöffnet was ein File welches bereits existiert auf 0 kürzt und von neuem zu schreiben beginnt.
Wer Probleme mit dem Vollaufen des /cache/-Verzeichnisses hat sollte mal die Schreibrechte prüfen (min. 755, auf manchen Umgebungen 777, nötig).
Wenn da alles in Orndung ist mal folgendes probieren und Feedback geben:
In /inc/db_functions.php folgenden Code suchen:
$cache->set($id, $records , DB_CACHE_EXPIRE);
und hiermit ersetzen:
//$cache->set($id, $records , DB_CACHE_EXPIRE);$cache->set($id, $records , DB_CACHE_EXPIRE
, array('skipExisting' => true)); //test for file based caching of DB queries, noRiddle Gruß,
noRiddle