You are not logged in.

1

Saturday, August 2nd 2008, 2:56am

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:

PHP Quellcode

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



Danke =)

2

Saturday, August 2nd 2008, 11:45am

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.

3

Saturday, August 2nd 2008, 1:42pm

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 http://www.tutorials.de/forum/php-tutori…-speichern.html
Oder mehr bei Google "session handler" database php

4

Saturday, August 2nd 2008, 1:46pm

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 ;)

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 http://www.tutorials.de/forum/php-tutori…-speichern.html
Oder mehr bei Google "session handler" database php


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 ;)

5

Saturday, August 2nd 2008, 1:58pm

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.

6

Saturday, August 2nd 2008, 2:38pm

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? ;)


:)

7

Saturday, August 2nd 2008, 3:18pm

Mach doch eine Abstraktion.

Ich habe z.B Session-Daten in meinem Request Objekt stehen.

PHP Quellcode

1
oAPI_Request::getCurrentSession();


Erstmal kannst du es ja dann mit $_SESSION Implementieren und dann später auf die Lösung deines Herzens umspringen.

Similar threads

Social bookmarks