Mailinglisten-Archive |
>ich hab bereits vor einiger zeit ein auf meine bedürfnisse zugeschnittenes >session-management programmiert mit user tracking usw. nun hab ich in den >letzten tagen das ganze auf "register_globals=off"-kompatiblität (also php >4.2.2 default settings) umgestellt, wobei ich mir die ganze struktur >nochmals durch den kopf gehen hab lassen und auf folgende frage gestoßen bin: >mal davon abgesehen, dass es vielleicht verschwendung von speicherplatz >ist... ist es sinnvoll, bzw ist es von nachteil (vor allem die performace >betreffend), wenn ich meine sessiontabellen in einer separaten db (die >jedoch am selben db-server liegt) halte? >- was spricht dafür, was dagegen? >- wie sollte ich bzgl performance am besten auf die session-db zugreifen? >(ein eigenes mysql_select_db() für die session-db ausführen, oder über >entsprechend gestaltete SQL commands - also z.b. select * from >datenbank.tabelle - auf die session-db zugreifen?) Hi Andy, Ich kann dir hier an dieser Stelle eigentlich nur meine persönliche Meinung wiedergeben. Meines Erachtens wird in den häufigsten Fällen der Fehler gemacht überhaupt mit Sessions zu arbeiten. In den meisten Szenarien genügt es eine dynamische Seite via Get oder Post auszuwerten um dem Client die richtige Seite zu servieren. Normalerweise erfordern nur komplexe Anfragen ein aktives Sessionmangement. Im allgemeinen gilt: Je weniger Session - Management desto mehr Performance (indirekte Proportionalität). Die Sessiontabellen in einer seperaten DB zu halten bringt i.d.R. fast keinen Performanceverlust. Die einfachste Möglichkeit dies zu verwalten ist eine allgemeine Klasse für deine allgemeinen Datenbankzugriffe zu erstellen und diese dann mit deiner Session - DB - Klasse zu erweitern (Zugriffsdaten überschreiben, spezielle Session - Funktionen wie Register, Serilisierungen usw.) Einen Nachteil hat die Methode aber trotzdem. In dem oben beschriebenen Fall wird ein zweiter Prozess eröffnet, was die Anzahl der gleichzeitig möglichen offenen Clientverbindungen reduziert. Du siehst, es gibt viele Möglichkeiten die Performance eines Projekts zu erhöhen. Dazu gehört auch Server zu spiegeln, gute Hardware (schnelle Festplatten, Multiprozessor Boards, schnelle Netzanbindung, Ausfallsicherheit etc...), ein gut angepasstes Betriebssystem (Linux wär so eines, aber ohne KDE auf Serverebene... ;-)) und letztendlich auch eine gute Strukturierung des Projekts selbst. Schlussbemerkung: Es ist absolut sinnlos alle Seiten mit einem Sessionmanagement zu verwalten, ob man dieses braucht oder nicht. Verwende dein Session - Management nur wenn du es brauchst, aber dann effektiv. Das bringt dir mehr Performancegewinn als Ameisenzählen im Quellcode. Frage eines Auswärtigen: Was ist schneller, Auto - oder öffenliche Verkehrsmittel? Antwort eines Einheimischen: Wenns di auskennst kimmts auf'd Uhrzeit an, wenn net, dann schaffts das nie !! MFG Wolfgang
php::bar PHP Wiki - Listenarchive