php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 01-01-2012, 15:30
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 57
Malachite befindet sich auf einem aufstrebenden Ast
Standard Sessions oder SQL?

Ich arbeite gerade an einer Anwendung mit einem Login-System. Die Userprofile sind in der Datenbank gespeichert etc., wie das eben üblich ist.

Jetzt habe ich zwei Möglichkeiten, einen User wiederzuerkennen:
Die eine ist, nur die ID in der Session zu speichern und anhand dieser ID bei jedem Seitenaufruf eine SQL-Query durchzuführen, die die restlichen Daten holt.
Die andere ist, nur eine Query beim Login durchzuführen und das ganze Profil in der Session zu speichern.

Was sollte ich nehmen?

Geändert von Malachite (01-01-2012 um 15:40 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 01-01-2012, 15:34
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

So wie du die Frage gestellt hast, ist dir jetzt schon zu 100% klar, dass nur Lösung A die richtige sein kann.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 01-01-2012, 15:39
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 57
Malachite befindet sich auf einem aufstrebenden Ast
Standard

Und wieso? Sessions werden doch im Gegensatz zu Cookies auf dem Server gespeichert? Ist das nicht performanter, wenn das Profil schon vorhanden ist (session_start() muss ja sowieso ausgeführt werden)?
Mit Zitat antworten
  #4 (permalink)  
Alt 01-01-2012, 15:43
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Das mag performanter sein, ist aber auch die dümmste aller Lösungen.

Denn:
Wie willst du den User umtaufen können, wenn der Name in Session steht?
Wie willst du ihm andere Rechte verpassen können?
Soll der von dir gebannte Troll bis zu seinem logout aktiv sein dürfen?
__________________
Wir werden alle sterben
Mit Zitat antworten
  #5 (permalink)  
Alt 01-01-2012, 15:46
Malachite
 Registrierter Benutzer
Links : Onlinestatus : Malachite ist offline
Registriert seit: Aug 2011
Beiträge: 57
Malachite befindet sich auf einem aufstrebenden Ast
Standard

Stimmt, das habe ich nicht bedacht

Dann eben doch jedesmal SQL-Queries.

Mit Zitat antworten
  #6 (permalink)  
Alt 14-01-2012, 23:42
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn Performance irgendwann zum Bottleneck wird, kann man aber auch einfach einen Zeitstempel in der Session speichern, und nur alle paar Minuten die Daten mal aus der Datenbank neu laden.
Mit Zitat antworten
  #7 (permalink)  
Alt 15-01-2012, 01:13
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ghostgambler Beitrag anzeigen
Wenn Performance irgendwann zum Bottleneck wird, kann man aber auch einfach einen Zeitstempel in der Session speichern, und nur alle paar Minuten die Daten mal aus der Datenbank neu laden.
Eine Session ist kein Cache und sollte nicht als solches missbraucht werden. Wenn du cachen willst, dann nimm einen richtigen Cache. Der erfüllt diese Aufgabe auch noch viel besser.

Übrigens: Die Datenbank selber hat bereits einen eingebauten Cache.

Und wenn eine einfache Benutzerabfrage bereits die Datenbank in die Knie zwingt, dann hast du viel ernsthaftere Probleme als die Entscheidung, wohin du Userdaten speichern sollst.

Geändert von h3ll (15-01-2012 um 01:16 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 15-01-2012, 15:59
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Warum sollte eine Session nicht als Cache missbraucht werden?

Es geht nicht um eine einfache Benutzerabfrage, sondern ggf. um ein paar tausend Abfragen, die über Netzwerk-Schnittstelle, zum DB-Server, dort ausgewertet, und das Ergebnis zurück geschaufelt werden muss.
Ein pauschales Nein an der Stelle ist Quatsch und wenn das deine Ansicht ist, dann mag das so sein, ich teile sie nicht und ich kann sie ebenso belegen wie du vielleicht deine Ansicht belegen kannst.
Mit Zitat antworten
  #9 (permalink)  
Alt 15-01-2012, 16:02
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ghostgambler Beitrag anzeigen
Warum sollte eine Session nicht als Cache missbraucht werden?
Weil eine Session ein Speicher für Sitzungsdaten ist und kein Cache.

Zitat:
Zitat von ghostgambler Beitrag anzeigen
Es geht nicht um eine einfache Benutzerabfrage, sondern ggf. um ein paar tausend Abfragen, die über Netzwerk-Schnittstelle, zum DB-Server, dort ausgewertet, und das Ergebnis zurück geschaufelt werden muss.
Ein pauschales Nein an der Stelle ist Quatsch und wenn das deine Ansicht ist, dann mag das so sein, ich teile sie nicht und ich kann sie ebenso belegen wie du vielleicht deine Ansicht belegen kannst.
Es ist aber falsch. Eine Session ist kein Cache. Warum wehrst du dich dagegen einen richtigen Cache zu verwenden?

Wenn übrigens die vielen Abfragen das Problem sind, warum arbeitest du nicht daran? Warum die Symptome bekämpfen und nicht die Ursache?

Geändert von h3ll (15-01-2012 um 16:04 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 15-01-2012, 16:44
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Warum soll ich extra einen Cache einrichten, wenn ich ein paar Benutzerangaben auch einfach in die Session legen kann? Bisschen Pragmatismus bitte.
Da ist PHP inhärent schäbiger programmiert, als dass mit dieser Semantik-Umbiegung noch viel an Sinn den Bach runter gehen würde.
Mal abgesehen davon, dass es einfach keinen Mehrwert bietet, extra einen Cache einzurichten. Eher im Gegenteil. Der Overhead der benötigt wird, um den Cache zu verwalten, macht den Vorteil ggf. schon wieder zunichte. Die Session wird so oder so geladen und ob nun 1kb oder 2kb Daten drin stehen ist irrelevant.

Bei einer vollkommen dynamischen Website ist es nicht unrealistisch, dass ich bei jedem Seitenaufruf die Daten des Benutzers brauche. Also bei jedem Seitenaufruf ein Query für den Benutzer. Bei ein paar Tausend Nutzern pro Minute ein paar Tausend Queries pro Minute. Soll ich den Nutzern nun sagen, sie sollen die Website weniger oft aufrufen?

Ich sage ja nicht, dass es für jeden Fall sinnig ist die Session als Cache zu verwenden, aber ein pauschales niemals ist ebenso Quatsch. Wie so oft.
Mit Zitat antworten
  #11 (permalink)  
Alt 15-01-2012, 17:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ghostgambler Beitrag anzeigen
Warum soll ich extra einen Cache einrichten, wenn ich ein paar Benutzerangaben auch einfach in die Session legen kann?
Ja, Benutzerangaben. Aber keine Datenbankergebnisse.

Zitat:
Zitat von ghostgambler Beitrag anzeigen
Da ist PHP inhärent schäbiger programmiert, als dass mit dieser Semantik-Umbiegung noch viel an Sinn den Bach runter gehen würde.
Mal abgesehen davon, dass es einfach keinen Mehrwert bietet, extra einen Cache einzurichten. Eher im Gegenteil. Der Overhead der benötigt wird, um den Cache zu verwalten, macht den Vorteil ggf. schon wieder zunichte. Die Session wird so oder so geladen und ob nun 1kb oder 2kb Daten drin stehen ist irrelevant.

Bei einer vollkommen dynamischen Website ist es nicht unrealistisch, dass ich bei jedem Seitenaufruf die Daten des Benutzers brauche. Also bei jedem Seitenaufruf ein Query für den Benutzer. Bei ein paar Tausend Nutzern pro Minute ein paar Tausend Queries pro Minute. Soll ich den Nutzern nun sagen, sie sollen die Website weniger oft aufrufen?
Nochmal: Wenn eine Abfrage pro Benutzer bereits die Datenbank in die
Knie zwingt, hast du ein viel größeres Problem. Denn in der Regel musst du pro Benutzer und pro Request mit mehreren zig bis hunderte Abfragen rechnen.

Für mich klingt das ganze nach Mikrooptimierung. Du verschwendest Zeit für die Optimierung von etwas, das sich in der Praxis nicht bemerkbar machen wird.

Zitat:
Zitat von ghostgambler Beitrag anzeigen
Ich sage ja nicht, dass es für jeden Fall sinnig ist die Session als Cache zu verwenden, aber ein pauschales niemals ist ebenso Quatsch. Wie so oft.
Dann ist es halt in 99,999% der Fälle Quatsch. Und in diesen einem Fall auch.
Mit Zitat antworten
  #12 (permalink)  
Alt 15-01-2012, 21:13
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Mach wie du meinst und ich mach wie ich meine. Es gibt nicht auf alles die Antwort.
Mit Zitat antworten
  #13 (permalink)  
Alt 15-01-2012, 23:03
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.578
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von ghostgambler Beitrag anzeigen
Mach wie du meinst und ich mach wie ich meine. Es gibt nicht auf alles die Antwort.
Was du in deinem stillen Kämmerlein machst, bleibt dir überlassen. Aber erzähl im Forum, wo viele Anfänger mitlesen, irgendein Quatsch.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
SQL oder ODBC oder PHP oder Apache fri SQL / Datenbanken 2 05-09-2007 17:18
Sessions in DB? oder session cookies tomtitom PHP Developer Forum 7 14-06-2007 23:39
SESSIONS ohne File oder Cookie! r0acH PHP Developer Forum 4 18-05-2005 16:04
Sessions oder db-Eintrag? zagibu BRAINSTORMING PHP/SQL/HTML/JS/CSS 7 13-06-2004 23:27
Sessions oder Cookies? - User entscheidet! Rondos PHP Developer Forum 0 26-07-2003 16:56

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:38 Uhr.