Andreas-Lindig: wie geht eigentlich "session_set_save_handler()" ?

Hallo Forum,

Ich bin aus der Doku überhaupt nicht schlau geworden:
http://de.php.net/manual/de/function.session-set-save-handler.php

was sollen zum Beispiel diese Variablen (gleich in der ersten Funktion) bedeuten "global $sess_save_path, $sess_session_name;" und wo kommen die her?

oder was soll die zweite Funktion:

function close() {
  return(true);
}

was sagt mir eine Funktion, die nichts macht?

Also mein Problem ist, daß sich meine Sessions immer in Luft auflösen, wenn zwei Clients gleichzeitig auf mein Forum zugreifen. Ich vermute mittlerweile, daß das ein PHP-Problem ist. Nun wollte ich gern mal versuchen, die Session-Verwaltung manuell zu machen, um die Garbage-Collection oder was immer da spukt zu umgehen. Ich wollte also entweder dieses ominöse "session_set_save_handler()" verwenden oder vielleicht von den Session-Dateien immer eine Sicherungskopie machen, die man, wenn das Original plötzlich leer ist wieder zurückkopiert oder so. Hat da jemand Erfahrung mit?

vielen Dank für Hilfe
Gruß, Andreas

P.S. wenn wieder jemand meint, ich sollte nur mal meine php.ini richtig einstellen - so sieht sie aus:
http://www.andeas-lindig.de/scripte/info.php

  1. Hello,

    arbeitest Du auf Linux?
    Dann verlege das Sessionverzeichnis von /tmp/ nach z.B. /tmp/sessions/ und sperr das Verzeichnis gegen Lesen, also Rechte

    • -wx --- ---  und Owner sollte sein der Apache-User, also meistens "wwwrun" oder "apache"

    In der php-ini musst Du session.save_path dann noch anpassen.
    Apache neu starten nicht vergessen

    Dann kann der Garbage Collector nicht mehr tätig werden und die Sessiondateien bleiben erhalten. Sit natürlich nur zum Testen geeignet, sonst platzt Dir irgendwann die Platte.

    Grüße

    Tom

    1. Hallo Tom,

      arbeitest Du auf Linux?

      nicht wirklich - Linux ist nur bei meinem Provider

      Dann verlege das Sessionverzeichnis von /tmp/ nach z.B. /tmp/sessions/ und sperr das Verzeichnis gegen Lesen, also Rechte

      äh, ich glaube nicht, daß ich bei dem einfach Rechte ändern kann.

      Dann kann der Garbage Collector nicht mehr tätig werden und die Sessiondateien bleiben erhalten. Sit natürlich nur zum Testen geeignet, sonst platzt Dir irgendwann die Platte.

      selbst wenn ich o.g. machen könnte, würde mir das ja nichts nützen, wenn's nur zum Testen taugt - das Teil soll ja mal laufen.

      Gruß, Andreas

  2. Moin!

    Also mein Problem ist, daß sich meine Sessions immer in Luft auflösen, wenn zwei Clients gleichzeitig auf mein Forum zugreifen.

    Wie testest du das? Wo testest du das? Ich erinnere, das so ein Problem hier schon länger durchs Forum geistert, aber nichts genaues mehr.

    Ich vermute mittlerweile, daß das ein PHP-Problem ist. Nun wollte ich gern mal versuchen, die Session-Verwaltung manuell zu machen, um die Garbage-Collection oder was immer da spukt zu umgehen. Ich wollte also entweder dieses ominöse "session_set_save_handler()" verwenden oder vielleicht von den Session-Dateien immer eine Sicherungskopie machen, die man, wenn das Original plötzlich leer ist wieder zurückkopiert oder so. Hat da jemand Erfahrung mit?

    Das Beispiel von PHP.net ist schlecht. Es erklärt nicht, welche Argumente die Funktionen annehmen müssen, es erklärt überhaupt fast nichts. Die Beispiele in den Useranmerkungen sind nicht verkehrt, wenn man beispielsweise die Sessions in die Datenbank speichern will. Das würde ich mal testweise (oder als Lösung) empfehlen.

    Du hast dann über die Funktion gc() (oder wie auch immer du sie nennst) Kontrolle über die Löschung von Session-Einträgen, sie zu alt werden.

    Vielleicht solltest du dir für bessere Erklärungen auch irgendein Tutorial suchen, welches das mal besser erklärt.

    - Sven Rautenberg

    --
    "Beim Stuff für's Web gibts kein Material, was sonst das Zeugs ist, aus dem die Sachen sind."
    (fastix®, 13. Oktober 2003, 02:26 Uhr -> </archiv/2003/10/60137/#m338340>)