Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: DB Cache

    Schreinermeister

    • Fördermitglied
    • Beiträge: 415
    • Geschlecht:
    DB Cache
    am: 06. März 2018, 09:59:18
    Hallo zusammen,

    nach langem hab ich wieder mal die Zeit gefunden an der Konfiguration des Shops zu arbeiten.

    modified eCommerce Shopssoftware v2.0.3.0 rev 10907 dated: 2017-08-16
    Datenbank Version: "MOD_2.0.3.0"
    Cache-Verzeichnis-Rechte  705

    Nun bin ich beim DB Cache hängen geblieben. (Wiedermal)
    Nach dem aktivieren des DB-Cache wächst der Inhalt des chache Verzeichnisse auf dem Server im Durchschnitt um 150 Dateien pro Minute an.
    Ich hab versuchsweise die CD-Cache Lebenszeit auf 600 gesetzt um zu testen ob der Zuwachs nach gewisser Zeit geringer wird. Leider ist dies nicht der Fall.
    Nach ca. 24h ist die Dateianzahl auf dem Server auf über 260000 angewachsen, wobei die maximale Dateienanzahl meines Server-Paketes überschritten wird und der Shop nicht mehr erreichbar ist.

    Wie ist der Satz
    "Zeit in Sekunden, bevor Cache Dateien mit Daten aus der Datenbank automatisch Überschrieben werden."
    zu verstehen?

    Sollte die Dateienanzahl nach den genannten 600 Sekunden nicht annähernd gleich bleiben ?

    [ Für Gäste sind keine Dateianhänge sichtbar ]

    Gruß Chris.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=38666.0

    Schreinermeister

    • Fördermitglied
    • Beiträge: 415
    • Geschlecht:
    Re: DB Cache
    Antwort #1 am: 30. August 2018, 12:34:58
    Hallo zusammen,

    ich muss das Thema nochmals aufgreifen.

    Nach dem Update auf 2.0.4.2 hab ich heute mal die Zeit gefunden den DB-Cache zu überprüfen.

    Leider ist es wie vorher. Es werden Cache-Dateien im Cache-Verzeichnis erstellt, aber nicht mehr gelöscht.
    Dadurch entsteht nach gewisser Zeit ein Überlauf der max. Dateianzahl auf dem Server.

    Hat jemand eine Idee?

    Gruß Chris

    ambi

    • Fördermitglied
    • Beiträge: 33
    • Geschlecht:
    Re: DB Cache
    Antwort #2 am: 26. November 2018, 11:06:21
    Habe das gleiche Problem. Gibt es da eine Lösung?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: DB Cache
    Antwort #3 am: 26. November 2018, 18:04:28
    Ich hatte dazu mal etwas geschrieben was ich leider gerade nicht mehr finde.
    Es gibt schon ein Problem mit dem Verständnis was der Unterschied zwischen der Einstellungen für "Cache benutzen" und "DB Cache" ist, bzw. was erstgenanntes überhaupt sein soll.
    Hier im Bug-Tracker # 268 habe ich zum Thema des Directories in welchem gespeichert wird auch einiges gesagt.
    Das Problem ist noch nicht gelöst soweit mir bekannt ist.

    "Cache benutzen" würde ich jedenfalls mal ausschalten und lediglich "DB Cache" benutzen.
    Läuft das Directory dann auch immer voller ?

    Gruß,
    noRiddle

    *NACHTRAG*
    Hier ist der Post den ich nicht gefunden hatte.

    Schreinermeister

    • Fördermitglied
    • Beiträge: 415
    • Geschlecht:
    Re: DB Cache
    Antwort #4 am: 26. November 2018, 20:28:54
    Hallo noRiddle,

    ich bin bisher davon ausgegangen das "Cache benutzen" das cachen der Webseiten und "DB Cache" das cachen von Datenbankabfragen betrifft.

    Ich habs eben nochmals geprüft.
    Bei deaktivierten "Cache benutzen" und aktivierten "DB Cache" werden die DB-Abfragen in den cache-Ordner geschrieben. Leider werden diese nicht, wie unter "DB Cache Lebenszeit" beschrieben, nach der vorgegebenen Zeit überschrieben bzw. gelöscht. (Zeit in Sekunden, bevor Cache Dateien mit Daten aus der Datenbank automatisch überschrieben werden.)

    Ich kann leider nicht sagen ob der "DB Cache" überhaupt was bringt.  :nixweiss:

    Dadurch steigt die Anzahl der Dateien sehr schnell an, was früher oder später zum überlauf der max. Dateienanzahl auf dem Server führt.

    Gruß Chris

    swolfram [templatix]

    • Fördermitglied
    • Beiträge: 1.169
    • Geschlecht:
    Re: DB Cache
    Antwort #5 am: 27. November 2018, 10:26:21
    Ich aktiviere den DB-Cache fast in jedem Shop, da er meiner Meinung nach doch einiges an Geschwindigkeit bringt in Verbindung mit kompletter und richtiger Komprimierung. In größeren Shops läuft der Ordner aber tatsächlich gern mal so richtig voll deswegen, da die Müllentsorgung hier scheinbar nicht funzt.

    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. Besonders wenn man diverse neue Artikel oder Änderungen online gebracht hat. So erkläre ich das auch immer allen Kunden und es läuft immer ohne Probleme.

    ambi

    • Fördermitglied
    • Beiträge: 33
    • Geschlecht:
    Re: DB Cache
    Antwort #6 am: 27. November 2018, 15:59:57
    Hallo noRiddle,

    ich kann die Aussage vom Schreinermeister so bestätigen.

    Wir hatten bis vor kurzen einen eigenen  Server wo die Anzahl der Dateien keine Rolle gespielt hat. Aus dem Grund ist es mir nie aufgefallen das der cache Ordner immer „voll läuft“. (in 24 Stunden rund 200.000 Dateien) Da wir jetzt auf einen Webhosting Paket umgestiegen sind,  hatten wir die gleichen Probleme dass die max. Anzahl der Dateien beschränkt ist. Es spielt auch keine Rolle auf welche Zeit man die Lebenszeit stellt. DB-Cache auf 60 Sek. gestellt bringt also auch nix. Cache Dateien werden immer mehr- kann übrigens auch local mit xampp simmuliert werden  
    Ich habe das kurzfristig mit einen delcache.php und einen Cronjob der 2 x täglich alle Dateien löscht gelöst.
    Performance mit eingeschalteten DB-Cache ist ca. 4x schneller als ohne, so dass ich den Performance Vorteil nutzen möchte. Mit DB-Cache ca. 0,6 Sek Parse Time, ohne dagegen ca. 2 Sek.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.990
    • Geschlecht:
    Re: DB Cache
    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:
      Code: PHP  [Auswählen]
      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
      Code: PHP  [Auswählen]
      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:
      Code: PHP  [Auswählen]
      $cache->set($id, $records , DB_CACHE_EXPIRE);

      und hiermit ersetzen:
      Code: PHP  [Auswählen]
      //$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

      ambi

      • Fördermitglied
      • Beiträge: 33
      • Geschlecht:
      Re: DB Cache
      Antwort #8 am: 27. November 2018, 16:29:40
      Hallo noRiddle,

      Local getestet und funzelt :-)

      Werde es morgen im Live Shop testen und Bescheid geben.

      noRiddle (revilonetz)

      • Experte
      • Beiträge: 13.990
      • Geschlecht:
      Re: DB Cache
      Antwort #9 am: 27. November 2018, 17:04:05
      Danke.
      Ist aber seltsam, denn, wie ich bereits sagte, müsste es auch ohne die Änderung gehen, eben wegen
      Code: PHP  [Auswählen]
      $f = fopen($file_path, "w+");

      Gruß,
      noRiddle

      *NACHTRAG*
      Was genau "funzelt" denn ?
      Schreibrechte oder Code-Änderung ?

      *NACHTRAG 2"
      Bei mir funktioniert's auch ohne Code-Anpassung. (Live-Umgebung)

      noRiddle (revilonetz)

      • Experte
      • Beiträge: 13.990
      • Geschlecht:
      Re: DB Cache
      Antwort #10 am: 27. November 2018, 17:47:30
      "Cache Ordner" (= interne Konstante DIR_FS_CACHE) wird übrigens nirgends benutzt.

      Werde dazu ein wohl Ticket anlegen...

      Gruß,
      noRiddle

      Schreinermeister

      • Fördermitglied
      • Beiträge: 415
      • Geschlecht:
      Re: DB Cache
      Antwort #11 am: 27. November 2018, 18:04:42
      Hallo noRiddle,

      Danke für deine Hilfestellungen und Lösungsvorschläge.  :thumbs:

      Ich habs eben im Live-Shop getestet.

      Hab deine Codeänderung in der /inc/db_functions.php eingebaut

      Cache-Verzeichnis auf  755   und später auf   777  gesetzt

      DB Cache Lebenszeit auf 60sec. gesetzt.

      Leider werden keine Cache-Dateien gelöscht oder überschrieben was zum Überlauf führt.

      Mir ist aufgefallen das die .txt Cache-Dateien die Eigenschaft 604 haben.
      Ist dies relevant?

      Leider ist, wie von ambi beschrieben, auch bei mir die Webseite spürbar langsamer wenn DB-Cach deaktiviert ist.  :-/

      Gruß Chris

      noRiddle (revilonetz)

      • Experte
      • Beiträge: 13.990
      • Geschlecht:
      Re: DB Cache
      Antwort #12 am: 27. November 2018, 18:23:00
      Vorab:
      Die Code-Änderung kannst du rückgängig machen, es liegt nicht daran.

      Eigentlich müssten die Schreib-/Lesrechte automatisch gesetzt werden (sind in phpfastcache config auf 0777 gesetzt).

      Gelöscht werden nach meiner Code-Analyse sowieso keine Files, sie müssten aber überschrieben werden. Der Filename bleibt nämlich gleich bei gleichen Queries.

      Bei mir werden sie überschrieben. Das sehe ich ja am "zuletzt geändert" und am Wert für "expired_time" in den Files selbst.
      /cache/ steht bei mir auf 755 und die Files auf 644.

      Das funktioniert zwar, aber nach Code, sollte alles auf 777 gesetzt werden, wie oben bereits erwähnt.
      Es gibt aber Umgebungen/Fälle wo der benutzte PHP-Befehl chmod() nicht funktioniert.
      Z.B. wenn Security-Packages das verhindern (wie z.B. SELinux).
      Wie das gefixt werden kann weiß ich jetzt auf die Schnelle auch nicht.

      Gruß,
      noRiddle

      *NACHTRAG*
      Mich würde mal interessieren ob einer von euch doppelte File-Namen hat (sollte eigtl. nicht gehen, aber...).

      *NACHTRAG 2*
      Bei mir geht's übrigens auch mit 644 auf /cache/, eigtl. auch logisch.

      Timm

      • Fördermitglied
      • Beiträge: 6.258
      Re: DB Cache
      Antwort #13 am: 27. November 2018, 18:56:05
      Ist in beiden Ordnern auch eine Index.html vorhanden? Vielleicht hat das ja was damit zu tun. Falls man den Ordner mal manuell komplett geleert hat.

      Gruß Timm

      noRiddle (revilonetz)

      • Experte
      • Beiträge: 13.990
      • Geschlecht:
      Re: DB Cache
      Antwort #14 am: 27. November 2018, 20:15:25
      Da gehört 'ne index.html und 'ne .htaccess rein (siehe Original-Download-Paket).

      Übrigens werden doch Files gelöscht, nach 24 Std., soweit ich den Code verstehe.

      Ein Schreibrechtproblem kann es eigtl. nicht sein, sonst würde das Directory ja nicht voll laufen.
      Evtl. Leserechte ?

      Gruß,
      noRiddle
      6 Antworten
      6726 Aufrufe
      07. Februar 2010, 19:59:35 von Tomcraft
      3 Antworten
      5040 Aufrufe
      23. Juli 2012, 15:55:38 von shkshop
      8 Antworten
      503 Aufrufe
      21. September 2022, 19:56:12 von noRiddle (revilonetz)