Session Handler. Datenbank oder 'Server'?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Session Handler. Datenbank oder 'Server'?

    Hallo,

    ich wollte gerne einmal wissen, was Ihr für besser haltet, wo man die Session speichern sollte.
    Bzw. was hat es für Vorteile wenn man es in der DB speichert?

    Ich rede von 2 Funktionen wie zum Beispiel:

    Quellcode

    1. session_start();
    2. $_SESSION['bla'] = Blub
    3. // bzw.
    4. mysql_query("INSERT INTO session....");



    Danke =)
  • Ich nutze die von PHP bereitgestellte Methode, sprich $_SESSION[xyz] = abc;

    Ich wüsste nich wofür ich es in die DB speichern sollte.
    Gut man könnte relativ leicht anzeigen welche Sitzungen gerade aktiv sind, in soner "User online Liste". Dafür nutze ich aber eh einen OnlineCounter um auch Gäste zählen zu können, also wäre die DB Methode eigentlich doppelt gemoppelt.

    Mit $_SESSION bist zu außerdem flexibler, da du einfach mal hier und dort ein offset erstellen könntest geschweige denn ganze Arrays reinprügeln.
  • Das ist doch beides das selbe ;)

    Jedenfalls, wenn man es sauber programmiert.
    Dann benutzt der Programmierer die Syntax von Version 1 und im Hintergrund wird Version 2 ausgeführt.

    Im Normalfall werden Sessions im /tmp Verzeichnis im Dateisystem EINES Webservers gespeichert. Was macht man aber, wenn man die Anwendung auf mehrere Webserver skalieren will?
    Richtig, man nutzt gemeinsame Datenbank. Man hat einfach viel mehr Kontrolle.

    Also nutzt man einen eigenen Session Handler, siehe zum Beispiel tutorials.de/forum/php-tutoria…-datenbank-speichern.html
    Oder mehr bei Google [google]"session handler" database php[/google]
  • KeksNico schrieb:

    Ich nutze die von PHP bereitgestellte Methode, sprich $_SESSION[xyz] = abc;

    Ich wüsste nich wofür ich es in die DB speichern sollte.
    Gut man könnte relativ leicht anzeigen welche Sitzungen gerade aktiv sind, in soner "User online Liste". Dafür nutze ich aber eh einen OnlineCounter um auch Gäste zählen zu können, also wäre die DB Methode eigentlich doppelt gemoppelt.

    Mit $_SESSION bist zu außerdem flexibler, da du einfach mal hier und dort ein offset erstellen könntest geschweige denn ganze Arrays reinprügeln.


    Es stimmt schon, das man mit $_SESSION wesentlich einfacher bedient ist ;)

    d0nut schrieb:

    Das ist doch beides das selbe ;)

    Jedenfalls, wenn man es sauber programmiert.
    Dann benutzt der Programmierer die Syntax von Version 1 und im Hintergrund wird Version 2 ausgeführt.

    Im Normalfall werden Sessions im /tmp Verzeichnis im Dateisystem EINES Webservers gespeichert. Was macht man aber, wenn man die Anwendung auf mehrere Webserver skalieren will?
    Richtig, man nutzt gemeinsame Datenbank. Man hat einfach viel mehr Kontrolle.

    Also nutzt man einen eigenen Session Handler, siehe zum Beispiel tutorials.de/forum/php-tutoria…-datenbank-speichern.html
    Oder mehr bei Google [google]"session handler" database php[/google]


    Und genau deine Meinung teile ich. Wenn man die Anwendung auf mehrere Server verteilen muss, ist eine gemeinsame Datenbank wesentlich einfacher. Nur ein Freund hatte mir gesagt, das er bei seinem Projekt die $_SESSIOn auf einem memchache Server verwaltet, was sehr schnell ist da es eifnach nur im RAM ist ;)
  • klar, memcached rocks! Aber wo soll das Script überall funktionieren? Die wenigstens stellen memcached zur Verfügung.
    Wenn du in MySQL den Datenbanktyp "MEMORY" auswählst, dann bist du auch ziemlich flott dabei.. und das stellt Webhoster jeder zur Verfügung.

    Wenn mir eine Forensession verloren geht, weil ich den MySQL mal neustarte, ist mir das ziemlich egal. Bei sensibleren Anwendungen sollte man MyISAM verwenden...
    so wie im Tutorial.
  • Na das mit dem Memcache ist net unser Problem ;)
    Haben mehrere Server und benutzen bisher lediglich die $_SESSION Funktion. Da wir nun momentan ein neues Projekt in Angriff nehmen, müssen wir nun überlegen, welche Variante wir benutzen.
    Und das neue Projekt wird auf Dauer auf mehrere Server verteilt werden müsssen. Nur hab ich da noch keine große Ahnung von und informier mich derzeit nen bischen ;)

    Denke aber, das sich Memchache erst bei sehr sehr großen Projekten lohnen würde, oder? ;)


    :)