Robert R.: WELCHE Dateien werden aus dem session.save_path gelöscht? Lösung

Beitrag lesen

Liebe Mitdenker,
liebe Wissende,
liebe Neugierige,

ja!

Wo wird eingestellt, _welche_ Dateien aus dem Session-Verzeichnis gelöscht werden sollen?

Bekannt sind mir bisher die INI-Einstellungen zum

  • session.save_path
  • session.gc_maxlifetime & Co

Aber wo das Präfix "sess_" festgelegt ist, hab ich noch nicht gefunden.

Scheint wohl hart codiert zu sein oder irgendwo vorgegeben zu werden, wo man als PHP-Anwendungsprogrammierer nicht heran kommt.

Jedenfalls werden alle Dateien, die mit "sess_" anfangen in den Focus des GC gerückt und nach den Vorgaben der INI-Einstellungen unter "sess.*" gelöscht, wenn der GC passende Dateirechte darauf hat. Will man also, dass eine einzelne Session nicht gelöscht wird, würde das Voranstellen eines Zeichens (z.B. '#')schon genügen. Dass dieser Dateiname dann zufällig schon vorhanden wäre, wäre wirklich ein großer Zufall. Beim Rückbenennen sollte man allerdings etwas besser hingucken. Aber auch da sollte ein Konflikt nahzu ausgeschlossen sein.

Außerdem hätte ich gerne eine Funktion, um solch einen Sessionnamen selber auszuwürfeln. Meine alte ist wohl überholt. Inzwischen sind da ganz viel neue Zeichen in den Vorrat aufgenommen worden. Welche sind zulässig?

Eine Funktion habe ich mir erstellt. Die funktioniert auch prima und berücksichtigt auch die Regeln gegen Race-Conditions. Sie gibt den ausgewürfelten Namen und einen Filepointer auf die geöffnete und gesperrte Datei zurück. Es macht dem GC auch nix, wenn man [,._()w-z-] noch hinzu nimmt zum Zeichenvorrat. Die übrigen Zeichen habe ich mir wegen der Konflikte mit html, Filsystemen (Windows/Linux), Shells, usw. lieber gleich verkniffen.

Die Länge scheint aber geblieben zu sein.

Die Länge der Namen hat sich etwas verringert, wie es aussieht inclusive "sess_" auf 31 Zeichen.

Spirituelle Grüße
Euer Robert

--
Möge der Forumsgeist wiederbelebt werden!