Skip to the content
Documentation
Help Start
Reading in:
  • German: 9,059 of 9,059 pages
About the help in other languages
All help pages

Sessions in der Datenbank

Wann Exponential Sessions in der Tabelle ezsession hält und wann in PHPs eigenem Speicher, was die Tabelle enthält, wie Sie umstellen, wie abgelaufene Zeilen entfernt werden (ezsessiongc.php und das Cronjob-Skript…

Download as PDF

Address: https://doc.exponential.earth/exphelp/viewer/help/database-administrators/sessions-in-the-database.md

On this page

This page is a translation. Read the English original

Sessions in der Datenbank

Diese Seite richtet sich an Datenbankadministratoren, die entscheiden, ob eine Exponential-Website ihre Sessions in der Datenbank hält, und die die Tabelle ezsession betreuen, wenn sie das tut. Sie beantwortet: welcher Handler Sessions wo hält, was die Tabelle enthält, wie abgelaufene Zeilen entfernt werden und was sich mit mehreren Webservern ändert. Quelle: Sessions und settings/site.ini [Session].

Inhalt

  1. Zwei Handler
  2. Die Tabelle ezsession
  3. Auf den Datenbank-Handler umstellen
  4. Abgelaufene Sessions entfernen
  5. Anonyme Sessions und ForceStart
  6. Mehrere Webserver
  7. Checkliste

Zwei Handler

site.ini [Session] Handler entscheidet:

WertWo Sessions gehalten werdenAdministration
leer (der Standard): ezpSessionHandlerPHPPHPs eigener Session-Speicher (session.save_handler, meist Dateien auf dem Webserver)Setup > Sitzungen zeigt jüngste Anmeldungen aus ezuservisit, kann aber keine Sessions auflisten oder entfernen
ezpSessionHandlerDBdie Tabelle ezsession der Datenbank der WebsiteSetup > Sitzungen listet, zählt und entfernt Sessions

Eine Session endet [Session] SessionTimeout Sekunden nach ihrer letzten Verwendung (Standard 31104000, 360 Tage). Mit dem PHP-Handler entfernt PHP abgelaufene Sessions selbst (session.gc_maxlifetime, das Exponential auf SessionTimeout setzt). ezuservisit (letzter Besuch, Zahl der Anmeldungen, fehlgeschlagene Versuche) wird mit beiden Handlern geführt.

Die Tabelle ezsession

Aus kernel/sql/mysql/kernel_schema.sql:

SpalteBedeutung
session_keyder Primärschlüssel (32 Zeichen)
expiration_timewann die Session endet; indiziert
user_idder angemeldete Benutzer oder der anonyme Benutzer; indiziert
user_hashein an den Benutzer gebundener Hash
datadie serialisierten Session-Daten

Session-Schlüssel sind Zugangsdaten: Wer einen hat, ist als dieser Benutzer angemeldet. Behandeln Sie die Tabelle wie einen Passwortspeicher; die Administration zeigt die Schlüssel nie, nur einen kurzen Verweis. Der SQL-Abfrage-Cache speichert Lesezugriffe auf ezsession nie (querycache.ini ExcludeTables[]=ezsession).

Auf den Datenbank-Handler umstellen

# settings/override/site.ini.append.php
[Session]
Handler=ezpSessionHandlerDB
php bin/php/ezcache.php --clear-tag=ini --allow-root-user
./console exp:velocity deploy --allow-root-user

Alle melden sich einmal neu an: Von PHP gehaltene Sessions werden nicht übernommen. Der Änderungshinweis ezpSessionHandlerDB unter PHP 8 behandelt eine Korrektur an diesem Handler.

Abgelaufene Sessions entfernen

Mit dem Datenbank-Handler bleiben abgelaufene Zeilen in ezsession, bis etwas sie entfernt:

  • Setup > Sitzungen, Abgelaufene / alte Sitzungen entfernen: entfernt die abgelaufenen Zeilen und die Warenkörbe, die sie hinterlassen; niemand wird abgemeldet.

  • php bin/php/ezsessiongc.php (exp:ezsessiongc): dasselbe aus einer Shell, "as defined by site.ini[Session]SessionTimeout".

  • cronjobs/session_gc.php: das Cronjob-Skript. Kein Teil der mitgelieferten settings/cronjob.ini führt es aus; fügen Sie es in Ihrem Override einem Teil hinzu:

    # settings/override/cronjob.ini.append.php
    [CronjobPart-infrequent]
    Scripts[]=session_gc.php

Achten Sie auf die Zahl "abgelaufen, aber noch in der Tabelle" unter Setup > Sitzungen: Sie ist rot, wenn es welche gibt.

Anonyme Sessions und ForceStart

[Session] ForceStart=enabled öffnet für jeden anonymen Besucher eine Session. Mit dem Datenbank-Handler schreibt das für jeden Besuch eine Zeile; setzen Sie es nur, wenn anonyme Besucher gezählt werden müssen, und bemessen Sie die Tabelle und ihr Aufräumen dafür.

Mehrere Webserver

Mit dem PHP-Handler kennt jeder Webserver nur seine eigenen Sessions. Auf mehreren Servern halten Sie Sessions entweder in der Datenbank (jeder Server liest dieselbe Tabelle) oder leiten jeden Benutzer anhand des Session-Cookies an einen Server (Mehrere Webknoten, Sessions). SQLite kann nicht die Datenbank einer Website mit mehreren Servern sein, Datenbank-Sessions bedeuten dort also eine Server-Engine.

Checkliste

  • To do: Der Handler ist bewusst gewählt: PHP-Dateien auf einem Server, die Datenbank für mehrere.
  • To do: Mit dem Datenbank-Handler läuft session_gc.php aus einem Teil oder ezsessiongc.php aus Cron.
  • To do: ForceStart bleibt ausgeschaltet, sofern keine anonymen Sessions gebraucht werden.
  • To do: Sicherungen von ezsession werden als Geheimnisse behandelt, oder die Tabelle wird aus Kopien für andere herausgelassen.

Verwandte Seiten

Werden Sie Exponential-Partner

Partner teilen ihre Informationen, stellen Mittel bereit, geben Beiträge zurück und entwickeln die Produkte mit uns, und so wächst Exponential. Eine Partner-Website und ein Dashboard sind für Mitte 2027 geplant: Werden Sie noch heute Partner, damit wir schneller wachsen und neue Funktionen früher liefern.

Something wrong on this page? Report an error

Documentation license

This documentation is free documentation, licensed under the GNU Free Documentation License 1.3 or later.

Exponential Copyright © 1998-2026 Exponential Foundation and 7x