Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#1201 closed Bug/Fehler (fixed)

Fehler bei Cache löschen

Reported by: web28 Owned by: somebody
Priority: normal Milestone: modified-shop-2.0.3.0
Component: Admin Version: 2.0.2.2

Description (last modified by web28)

Cache Löschfunktion im Backend löscht die .htaccess und index.html im cache Verzeichnis

Attachments (0)

Change History (9)

comment:1 Changed 4 years ago by Tomcraft

Kann ich nicht nachvollziehen.

Der Aufruf erfolgt aus der "/admin/configuration.php":

      case 'delcache':
        clear_dir(DIR_FS_CATALOG.'cache/');
        $messageStack->add_session(DELETE_CACHE_SUCCESSFUL, 'success');
        xtc_redirect(xtc_href_link(FILENAME_CONFIGURATION, 'gID=' . (int)$_GET['gID']));
        break;

Die Funktion clear_dir() steckt in der "/admin/includes/functions.php" und arbeitet wie sie soll:

  /**
   * clear_dir()
   *
   * @param string $dir
   * @param boolean $basefiles
   */
  function clear_dir($dir, $basefiles = false) {
    if ($basefiles === true) {
      $files = glob(rtrim($dir, '/').'/{,.}[!.,!..]*', GLOB_BRACE);
    } else {
      $files = glob(rtrim($dir, '/').'/*');
    }
    foreach ($files as $file) {
      if(is_dir($file)) {
        clear_dir($file, true);
        rmdir($file);
      } else {
        if ($basefiles === false && basename($file) != 'index.html') {
          unlink($file);
        } elseif ($basefiles === true) {
          unlink($file);
        }
      }
    }
  }

comment:2 Changed 4 years ago by web28

Nicht Cache leeren sondern abspeichern mit Einstellung DB_CACHE = false löscht die Dateien

comment:3 Changed 4 years ago by Tomcraft

Na dann:

Suche:

        // DB Cache System [If Cache deactivated.. clean all cachefiles]
        if (isset($_POST['DB_CACHE']) && $_POST['DB_CACHE'] == 'false') {
          $handle = opendir(SQL_CACHEDIR);
          while (($file = readdir($handle)) !== false) {
            // Jump over files that are no sql-cache
            if (strpos($file, 'sql_') !== false) continue;
            @unlink(SQL_CACHEDIR.$file);
          }
        }

Und ersetze mit:

        // DB Cache System [If Cache deactivated.. clean all cachefiles]
        if ((isset($_POST['USE_CACHE']) && $_POST['USE_CACHE'] == 'false') || (isset($_POST['DB_CACHE']) && $_POST['DB_CACHE'] == 'false')) {
          clear_dir(DIR_FS_CATALOG.'cache/');
          //$messageStack->add_session(DELETE_CACHE_SUCCESSFUL, 'success'); // Optional gleich Erfolgsmeldung mit ausgeben?
        }

comment:4 Changed 4 years ago by web28

Nein, laut Code sollen nur SQL Cache (DB_CACHE) Dateien gelöscht werden (Wobei bei mir im Testshop mit DB_CACHE an keine sql_ Dateien angelegt werden, sondern nur Dateien mit .txt Endung.

comment:5 Changed 4 years ago by Tomcraft

Das Caching wurde doch von Gerhard komplett überarbeitet. Es gibt keine Dateien mehr, die mit "sql_*" beginnen.

comment:6 Changed 4 years ago by web28

  • Resolution set to fixed
  • Status changed from new to closed

In 10731:

partly fix #1201

comment:7 Changed 4 years ago by web28

  • Description modified (diff)
  • Resolution fixed deleted
  • Status changed from closed to reopened

Es muss noch geklärt werden wie nur die SQL Cache Datein gelöscht werden.

Man kann sie wohl an der .txt Endung erkennen.
Erkennung anhand von 'sql_' funktioniert ja wohl nicht mehr.

comment:8 Changed 4 years ago by GTB

  • Resolution set to fixed
  • Status changed from reopened to closed

In 10736:

fix #1201 (fix clear cache)

comment:9 Changed 4 years ago by Tomcraft

In 10738:

fix #1201 (deliver new index.html & .htaccess in next update if the files were deleted due to a malfunction in older releases)

Add Comment

Modify Ticket

Action
as closed
The resolution will be deleted. Next status will be 'reopened'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.