Andreas-Lindig: warum werden meine Session-Dateien so willkürlich gelöscht???

Hallo Forum,
in meinem Forums-Projekt werden die Session-Dateien (nicht immer, ober oft)
nach einigen Mituten gelöscht. Das passiert immer nur, wenn auf dem Server
(oder im gleichen Projekt?) noch andere Aufrufe stattfinden. Also: wenn ich
das Projekt mit dem einen Browser teste, offen stehen lasse, mit dem anderen
Browser teste und dann wieder zum ersten zurückkehre ist für diesen Browser
die aktuelle Sessiondatei nach einigen Mituen weg. wie komt' s?

freundlicher Gruß, Andreas

  1. Wahrscheinlich durch die Ablaufzeit des SessionCookies!

    Tip: versuchs mit phplib! da kannst du alles genau einstellen...

    1. Moin!

      Wahrscheinlich durch die Ablaufzeit des SessionCookies!

      Tip: versuchs mit phplib! da kannst du alles genau einstellen...

      Warum? phplib ist toll für PHP3 gewesen. Aber die Tatsache, dass die phplib extra ein Modul enthält, um die nativen PHP4-Sessions zu nutzen, sollte dich irgendwie stutzig machen.

      - Sven Rautenberg

      --
      ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|
      1. Hallo Sven,

        Warum? phplib ist toll für PHP3 gewesen. Aber die Tatsache, dass die phplib extra ein Modul enthält, um die nativen PHP4-Sessions zu nutzen...

        und, was sagt mir das jetzt?

        ss:) zu:) ls:[ fo:} de:] va:) ch:] sh:) n4:# rl:| br:< js:| ie:( fl:( mo:|

        aha!

        Gruß, Andreas

    2. Hallo Günther,

      Wahrscheinlich durch die Ablaufzeit des SessionCookies!

      Bzw. der Session ueberhaupt. PHPs "Garbage Collector" fuer
      diese Session-Dateien funktioniert relativ einfach: jeder
      PHP-Prozess guckt nach, ob eine der Sessions, die durch die
      Session-Dateien repraesentiert werden, abgelaufen ist. Wenn ja,
      so wird sie eben geloescht.

      Tip: versuchs mit phplib! da kannst du alles genau
      einstellen...

      Und das kann man nicht bei PHP selber? ;) Komisch, ich dachte,
      da gaebe es verschiedene Parameter...

      Gruesse,
       CK

      --
      http://cforum.teamone.de/
      http://wishlist.tetekum.de/
      If God had meant for us to be in the Army, we would have been born with green, baggy skin.
      1. Hallo

        Und das kann man nicht bei PHP selber? ;) Komisch, ich dachte,
        da gaebe es verschiedene Parameter...

        Und da hast Du recht steht sogar zur Abwechslung mal ausführlich sogar in der deutschen Doku.
        TomIRL

        1. Hallo Tom,

          Und da hast Du recht steht sogar zur Abwechslung mal ausführlich sogar in der deutschen Doku.

          klingt wie der Wink mit dem ZaunPfahl, aber ich habe alles durchforstet und nur die fogenden Werte gefunden:

          session.cache_expire (bei mir: 180)
          session.gc_maxlifetime (bie mir: 1440)

          nun habe ich versucht mit dieser Funktion:
          ini_set ('session.cache_expire', ...);
          den Wert zu ändern, aber keinen Erfolg gehabt.

          also ich bin noch kein bisschen klüger geworden durch meine Versuche...

          Gruß, Andreas

          1. Hallo ANdreas

            session.cache_expire (bei mir: 180)
            session.gc_maxlifetime (bie mir: 1440)

            nun habe ich versucht mit dieser Funktion:
            ini_set ('session.cache_expire', ...);
            den Wert zu ändern, aber keinen Erfolg gehabt.

            HAst Du Zugriff auf die PHP.ini?
            Dann kannst Du die in einem Texteditor ändern.
            2. Möglichkeit
            Du sendest einen richtigen Cookie da kannst Du die Laufzeit mit den Parametern mitgeben.
            Wer dann keine ookies akzeptiert muß eben damit leben, das er ab und zu rausfliegt.
            Dein Problem tritt aber nur unter ganz bestimmten Vorraussetzungen auf.
            Dann mußt Du Dir überlegen, ob diese beim normalen USer Deines Forum
            überhaupt mal antrifft.
            Ich denke ehr nicht.
            Hoffe ich konnte helfen

            TomIRl

            1. Hast Du Zugriff auf die PHP.ini?

              zuhause schon, aber da hat eben bisher nichts geholfen, vielleicht hab' ich's ja falsch gemacht...

              Hast Du Zugriff auf die PHP.ini?

              bei meinem Hoster natürlich nicht

              Dann kannst Du die in einem Texteditor ändern.

              aber was genau???

              1. Möglichkeit
                Du sendest einen richtigen Cookie da kannst Du die Laufzeit mit den Parametern mitgeben.

              Ich setze einen Cookie mit der Laufzeit ein Monat, allerdings mit Nutzer-Daten. Das Cookie mit der Session-ID wird natürlich automatisch gesetzt - meintest Du DAS (also die SessID nochmal per Hand setzen)?

              Wer dann keine ookies akzeptiert muß eben damit leben, das er ab und zu rausfliegt.

              wirkt nur leider ziemlich unprofessionell. Ich kann mir nicht vorstellen, daß man damit leben muß. Das gibt's doch auf andren Seiten auch nicht.

              Dann mußt Du Dir überlegen, ob diese beim normalen USer Deines Forum überhaupt mal antrifft. Ich denke ehr nicht.

              leider doch - haben Tester hier schon berichtet - und so viele haben noch nicht getestet.

              Hoffe ich konnte helfen

              leider bisher kaum, aber danke für Deine Mühe

              Gruß, Andreas
              --
              http://forum.andeas-lindig.de

              1. <session.cookie_lifetime
                0 bedeutet die Sesion wird beendet wenn der Browser gschlossen wird!

                1. Möglichkeit
                  Du sendest einen richtigen Cookie da kannst Du die Laufzeit mit den Parametern mitgeben.
                  Ich setze einen Cookie mit der Laufzeit ein Monat, allerdings mit Nutzer-Daten. Das Cookie mit der Session-ID wird natürlich automatisch gesetzt - meintest Du DAS (also die SessID nochmal per Hand setzen)?

                Ich würde es mal probieren.
                Ich hab mir gerade mal Deine Seite angeguckt und bei mir lief alles schön ohne rauswurf oder so.

                wirkt nur leider ziemlich unprofessionell. Ich kann mir nicht vorstellen, daß man damit leben muß. Das gibt's doch auf andren Seiten auch nicht.

                Da hast Du wohl recht.

                Viele Grüße aus berlin
                TomIRL

                1. <session.cookie_lifetime
                  0 bedeutet die Sesion wird beendet wenn der Browser gschlossen wird!

                  so ist es bei meinem Hoster. Weißt Du denn, was genau session.cache_expire bedeutet? Ich bin da aus dem Manual nicht wirklich schlau geworden. In wessen Cache wird da was gespeichert? Ich mein: die Seite wird doch (wg. PHP) immer neu interpretiert - die kann man doch nicht einfach speichern.

                  Gruß, Andreas

                  1. <session.cookie_lifetime
                    0 bedeutet die Sesion wird beendet wenn der Browser gschlossen wird!
                    so ist es bei meinem Hoster. Weißt Du denn, was genau session.cache_expire bedeutet? Ich bin da aus dem Manual nicht wirklich schlau geworden. In wessen Cache wird da was gespeichert? Ich mein: die Seite wird doch (wg. PHP) immer neu interpretiert - die kann man doch nicht einfach speichern.

                    session.cache_expire spezifiziert in Minuten, wie lange Session-Seiten im Cache bleiben. Bei nocache ist diese Angabe wirkungslos. Grundeinstellung 180.
                    Mit der Funktion session_cache_expire() kannst Du die aber hochsetzen.
                    Allerdings mußt Du die Funktion nach Manual vor session_start verwenden.
                    Ich denke mal es ist schon der Cache gemeint!
                    Ich ändere mal den Titel!
                    Vielleicht findet sich ja noch einmal ein qualifizierterer Antworter der richtig Ahnung von solchen Dingen hat.

      2. Hallo,

        du brauchst nur das Scanrecht (x) für das Sessionverzeichnis wegzunehmen. Dann werden gar keine Sessiondateien mehr gelöscht. Der GC ist nämlich sehr primitiv programmiert. Er scannt tatsächlich das Sessionverzeichnis und schaut sich die LastTouched Erte der Dateien an.

        Standardzeit sind 1440 Sekunden -> 24 Minuten.

        Chris