Andi: Benutzer fliegen aus Skript raus. Session abgelaufen?

Hallo Forum,

ich bin jetzt leider mit meinem chinesisch am Ende.
Problem: Benutzer fliegen teilweise nach einigen Sekunden (teilweise auch nach einigen Minuten) Inaktivität aus einem Skript auf PHP5 raus. Das Skript verwendet PHP Sessions mit Cookies.

Interessanterweise passiert dies alles nur auf dem Life-System, offline im Testsystem ist der Fehler sehr selten bis gar nicht vorhanden.
ich habe inzwischen alles versucht (Sessionverfallsdatum ist liegt inzwischen jenseits der 30 Tage...), die Werte werden sowohl per htaccess, als im Skript oder in der php.ini direkt festgelegt, es ändert sich nichts, ganz im Gegenteil. Auch auf Browser/Betriebssysteme ist es nicht zurück zu führen.

Frage: habt ihr schon mal einen fall gehabt, wo aus unerfindlichen Gründen die Session einfach abläuft? Was habt ihr dagegen gemacht?

Vielen Dank!

Andi

  1. echo $begrüßung;

    ich bin jetzt leider mit meinem chinesisch am Ende.

    你会说中文吗?

    Problem: Benutzer fliegen teilweise nach einigen Sekunden (teilweise auch nach einigen Minuten) Inaktivität aus einem Skript auf PHP5 raus. Das Skript verwendet PHP Sessions mit Cookies.
    Interessanterweise passiert dies alles nur auf dem Life-System, offline im Testsystem ist der Fehler sehr selten bis gar nicht vorhanden.

    Sind auf dem Life-System mehrere andere Kunden des Providers vorhanden? Teilen sich alle das gleiche session.save_path-Verzeichnis?

    ich habe inzwischen alles versucht (Sessionverfallsdatum ist liegt inzwischen jenseits der 30 Tage...)

    Jedes Projekt kann sich ja die Verfallszeiten selbst einstellen. Wenn dann noch der gleiche session.save_path für alle gilt, bereinigt ein Garbage Collector, der für andere Projekte zu passenderen Zeiten aufgerufen wird, auch die Session-Daten der anderen Projekte.

    Wenn es nicht daran liegen kann, prüfe zunächst, wie genau so ein "Session abgelaufen" aussieht. Es kann da zum einen aus irgend einem Grunde die Session-ID verloren gehen, oder zum anderen die Session-Datei verschwinden.

    echo "$verabschiedung $name";

    1. 你会说中文吗?

      ;-)

      Sind auf dem Life-System mehrere andere Kunden des Providers vorhanden? Teilen sich alle das gleiche session.save_path-Verzeichnis?

      das ist ein root-server, und da läuft nur das Skript drauf.

      Jedes Projekt kann sich ja die Verfallszeiten selbst einstellen. Wenn dann noch der gleiche session.save_path für alle gilt, bereinigt ein Garbage Collector, der für andere Projekte zu passenderen Zeiten aufgerufen wird, auch die Session-Daten der anderen Projekte.

      GarbeCollector ist teilweise deaktiviert und läuft nur nachts um 5, und die Verfallszeiten sind soweit irgendwo bekannt auf ernorme Werte gestellt worden (innerhalb des Skriptes, der htaccess, der php.ini, der httpd.conf etc).

      Wenn es nicht daran liegen kann, prüfe zunächst, wie genau so ein "Session abgelaufen" aussieht. Es kann da zum einen aus irgend einem Grunde die Session-ID verloren gehen, oder zum anderen die Session-Datei verschwinden.

      leider ist debuggen an dem system etwas kompliziert, da es eben im Dauerbetrieb ist... und ich hab irgendwie gehofft, dass hier im Forum einfach zufälligerweise jemand ein ähnliches Problem gehabt hat.

      Andi

      1. Hi Andi,

        GarbeCollector ist teilweise deaktiviert und läuft nur nachts um 5, und die Verfallszeiten sind soweit irgendwo bekannt auf ernorme Werte gestellt worden (innerhalb des Skriptes, der htaccess, der php.ini, der httpd.conf etc).

        Welches Betriebssystem ist denn auf deinem Root-Server? Bei Debian ist es beispielsweise so, dass der Garbage-Collector von PHP deaktiviert wurde und dafür durch einen Cronjob-Eintrag in /etc/cron.d/php5 die alten Session-Dateien regelmäßig gelöscht werden.

        Viele Grüße,
          ~ Dennis.

        1. Welches Betriebssystem ist denn auf deinem Root-Server? Bei Debian ist es beispielsweise so, dass der Garbage-Collector von PHP deaktiviert wurde und dafür durch einen Cronjob-Eintrag in /etc/cron.d/php5 die alten Session-Dateien regelmäßig gelöscht werden.

          hi!

          es ist wirklich debian drauf, den Eintrag hab ich aber schon gefunden und gelöscht gehabt. Ihr habt mich aber vorhin auf ne Idee gebracht, ich hab jetzt einfach mal geschaut wann der Session-Cookie abläuft, und siehe da, in 15 Minuten, und zwar trotz der ganzen Einstellungen. Jetzt hab ich ein bissl rum probiert und hab bemerkt, dass ich den Aufruf von session_set_cookie_params() noch nicht drin hatte. Hab das jetzt geändert und jetzt mal Abwartne, ob noch Beschwerden rein kommen.

          Auf jeden Fall allen mal viel Dank! :-)

          Andi

          1. Hi Andi,

            es ist wirklich debian drauf, den Eintrag hab ich aber schon gefunden und gelöscht gehabt.

            Ich würde ihn nicht löschen, sondern einfach session.gc_maxlifetime in der php.ini erhöhen. Der Cronjob in /etc/cron.d/php5 ist nämlich von den Debian-Entwicklern so gebaut worden, dass er eben diesen Wert aus der php.ini ausliest und daraufhin entsprechend die Session-Dateien löscht.

            Ihr habt mich aber vorhin auf ne Idee gebracht, ich hab jetzt einfach mal geschaut wann der Session-Cookie abläuft, und siehe da, in 15 Minuten, und zwar trotz der ganzen Einstellungen. Jetzt hab ich ein bissl rum probiert und hab bemerkt, dass ich den Aufruf von session_set_cookie_params() noch nicht drin hatte.

            Ok, deine Cookies sind also einfach nur verfallen, die Sessions auf dem Server hatten damit gar nichts zu tun ;-) Das klingt so, also sei in deiner php.ini der Wert für session.cookie_lifetime nicht auf 0 gesetzt, was eigentlich der Standard wäre. Entweder setzt du das wieder auf 0, was ein Cookie erzeugt, welches bis zum Schließen des Browser gültig bleibt, oder du nutzt eben weiterhin session_set_cookie_params() um dieses Verhalten nur in diesem einen Script von dir zu erreichen.

            Viele Grüße,
              ~ Dennis.

  2. ich bin jetzt leider mit meinem chinesisch am Ende.
    Problem: Benutzer fliegen teilweise nach einigen Sekunden (teilweise auch nach einigen Minuten) Inaktivität aus einem Skript auf PHP5 raus. Das Skript verwendet PHP Sessions mit Cookies.

    kann es sein, daß dies gehäuft bei AOL-Nutzern passiert?
    Und: nutzt Du wirklich nur Cookies oder bindest Du auch die IP ein?

    Gruß
    Reiner