mixmastertobsi: php Session php.ini

Hallo,

eine Frage zur PHP Session-Konfig?

Leider finde ich hier keine Empfehlungen, wie diese in der php.ini konfiguriert werden soll.

Kann mir hier jemand empfehlung geben? Und wo sollten die Sessions abgespeichert werden, damit diese am schnellstens geladen werden?

session.save_handler = files oder session.save_handler = memcached oder...?

  1. Hallo und guten Tag,

    eine Frage zur PHP Session-Konfig?

    Leider finde ich hier keine Empfehlungen, wie diese in der php.ini konfiguriert werden soll.

    Die Session-Dateien sollten auf jeden Fall für jeden VirtHost (jeden Webseiteninhaber) in einem eigenen Bereich gespeichert werden, nicht in einem gemeinsamen. Leider gibt das dann (noch) Probleme auf Hosts, die den Session Garbage Controller als Cronjob aufrufen. Da muss man dann z.B. wieder zurückkehren zum PHP-internen GC oder andere Lösungen suchen.

    Konfigurieren würde ich sie auch immer in der Ini des virtHost, bzw. in der VirtualHost-Konfiguration selbst, nicht jedenfalls in der generellen php.ini

    Kann mir hier jemand empfehlung geben? Und wo sollten die Sessions abgespeichert werden, damit diese am schnellstens geladen werden?

    session.save_handler = files oder session.save_handler = memcached oder...?

    Probiere es aus. Ich glaube nicht, dass das messbar sein wird, bzw. sich der Aufwand rechnet, da die meisten anderen Komponenten i.d.R auch von der Platte kommen und damit ggf. auch aus dem Cache des Dateisystems.

    Grüße
    TS

    --
    es wachse der Freifunk
    http://freifunk-oberharz.de
    1. Hallo,

      also wir haben einen Server, den wir nur alleine nutzen. Dass da ein anderer auf die Daten zugreifen kann, ist ausgeschlossen. Würde es ggf. auch Sinn machen die Sessions im RAM auszulagern?

      1. Hallo und guten Abend,

        also wir haben einen Server, den wir nur alleine nutzen. Dass da ein anderer auf die Daten zugreifen kann, ist ausgeschlossen.

        Ich würde die Sessiondateien für die unterschiedlichen Domains trotzdem getrennt halten. Das könnten sonst schnell zuviele werden für ein Verzeichnis, wenn Ihr mehrere Domains hostet.

        Würde es ggf. auch Sinn machen die Sessions im RAM auszulagern?

        Das kann ich Dir nicht wirklich beantworten. Ob ein Zugriff nun 80ms dauert oder 83, das dürfte relativ uninteressant sein für den Client-User. Aber Du müsstest mal rechnen, ob Ihr euch das vom Speicherbedarf her überhaupt leisten könnt. Die Sessiondateien müssen ja min. 24 Minuten (typische Einstellung) bereit gehalten werden, anders als die Request-Instanzen, die nur immer für kurze Zeit (50-100ms, oder in AUsnahmefällen auch mal >30Sec ) im Speicher liegen.

        Wenn Ihr nun gleichzeitig (innerhalb des Session-Lifetime-Zyklus von typisch 24 Min) ca. 5000 User online habt, müssen also 5000 * Sessiondatengröße im Speicher gehalten werden können. Kommt also darauf an, was alles in der Session gespeichert werden soll. Ich speichere z.B. auch Upload-Daten zwischen in der Session, bevor sie vom User verifiziert worden sind. Bilder werden z.B. während Bearbeitungsprozessen oft noch wieder verworfen. Die möchte ich später nicht alle als Leichen auf der Platte haben.

        Grüße
        TS

        --
        es wachse der Freifunk
        http://freifunk-oberharz.de
        1. Würde es ggf. auch Sinn machen die Sessions im RAM auszulagern?

          Das kann ich Dir nicht wirklich beantworten. […]

          Ja, die Frage sollte erst mal sein, welches Problem hier überhaupt gelöst werden soll oder um welchen konkreten Anwendungsfall es geht. Warum meinst du, was an der Session-Konfiguration verändern zu müssen?

          Pauschalantworten gibt es in dem Sinne ohnehin selten. Sonst wäre es ja eigentlich auch unnötig, etwas überhaupt konfigurierbar zu machen. Ich würde da ohne konkreten Anlass nichts dran drehen.

        2. Interessanter Ansatz ;) Wusste nicht, dass man auch Bilder in der Session zwischenspeichern kann.

          Werde ich gleich mal testen, denn der Datenmüll nervt mich auch immer... ;)

          1. Hallo und gute Nacht,

            Interessanter Ansatz ;) Wusste nicht, dass man auch Bilder in der Session zwischenspeichern kann.

            Werde ich gleich mal testen, denn der Datenmüll nervt mich auch immer... ;)

            Dann will ich Dir noch einen weiteren Hinweis dazu geben. Für einzelne kleinere Bilder kann man das in der eigentlichen Sessiondatei unterbringen...

            Aber damit der Speicher nicht platzt, wenn es mehrere oder größere Bilder werden, wenn die Session wieder geladen wird (das ist der kritische Zeitpunkt!), habe ich die Bilder in eigenen "Sessiondateien" gespeichert. Die kann man dann einzeln und wahlweise dazuladen.

            Die Namen dafür werden in der Haupt-Sessiondatei abgelegt und werden bei jedem Request, der ein session_start() hat, mit touch() am Leben erhalten. Diese leigen aber auch im zugehörigen Session-Verzeichnis und unterliegen dem gleichen Algorithmus für den Garbage Controller, verschwinden also auch wieder, nachdem die Min-Lifetime (irrsinnigerweise konfiguriert über session.gc_maxlifetime) abgelaufen ist.

            Das Verfahren sollte eigentlich mal ein Abschnitt vom Wiki-Artikel "File Upload" werden.

            Ich habe das wohl auf einer anderen Sicherungsplatte. Muss ich erst suchen...
            Mein Rechner war damals leider unsanft gestorben.

            ich hatte dafür ein paar spezielle Funktionen erstellt.

              string  get_random_string()
              ressource_id  get_random_cache_file()  
              bool mime_check_image()  
              int  save_uploaded_file()  
                
              usw.  
            
            

            Im Prinzip müsste man die auch schon im Self-Archiv wiederfinden.

            Das touchen der gemerkten Zusatz-Sessiondateien habe ich voererst per register_shutdown_function() realisiert. Das ist mMn auch ausreichend. Die Session muss ja erst instantiiert sein, bevor man auf ihre Daten zugreifen kann, um die Namen dann auch auslesen zu können.

            Wenn ich morgen etwas fitter bin, suche ich die Funktionen nochmal...

            Grüße
            TS

            --
            es wachse der Freifunk
            http://freifunk-oberharz.de