Performance: session_start() , session_auto_save_handler()
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aktuelle status
benutzen
bevorzugen
datenbank
datum
erstellen
file
folgen
funktion
letzten endes
machen
memory
normalen tabellen
reinen theorie
server
tabelle
unterscheiden
verlust
vermutung
zwang
-
Ich habe mal eine Frage. ;) ich habe mich mal ein wenig mit den Funktionen von Sessionen intensiv beschäftigt. Was mich mal interessieren würde. Was ist von der Performance her wohl schneller:
Die Standartfunktion session_start() zu benutzen, d.h. das Dateisystem zu benutzen.
Oder über session_auto_save_handler() über den MySQL Daemon in eine MySQL Datenbank zuschreiben? ;)
Beitrag zuletzt geändert: 8.8.2010 12:04:13 von robbmaster -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die MySQL-Variante ist meistens schneller (außer der MySQL-Server ist überlastet oder die Verbindung dahin ist zu langsam), da MySQL nicht ständig auf das Dateisystem zugreift, sondern auch im RAM cachet.
Bei vielen Seitenzugriffen wird sich das auch bemerkbar machen, bei einer kleinen Seite kann man aber auch ruhig die Standard-PHP-Funktionen benutzen.
LG cookies -
Es ging auch nur um das Prinzip - wo das ganze Sinn macht, sei jetzt mal dahin gestellt. Okay, das ist logisch. Wenn MySQL im RAM cached, erklärt das auch wieso diese Variante schneller ist - ich hatte mich vorher gewundert, da letzten Endes MySQL die Daten auch in irgendeinem, benannten Dateiformat speichern muss. Wobei, ist es nicht in der reinen Theorie auch risikoreich die Daten zu cachen? Nur mal angenommen, der Server geht durch Zufall zwischen durch mal aus - der aktuelle Status der Datenbank ist dann logischerweise 'gefälscht', da es sich um alte Werte handelt?
-
Wenn du es auf Lima nutzten willst, ist wahrscheinlich die File-Variante schneller, weil du hier keine MEMORY Tabellen erstellen kannst.
Auf deinem eigenen Server würde ich über die Datenbankvariante bevorzugen mit einer MEMORY Tabelle. Das ganze am besten noch lazy ;) -
nikic schrieb:
Wenn du es auf Lima nutzten willst, ist wahrscheinlich die File-Variante schneller, weil du hier keine MEMORY Tabellen erstellen kannst.
Auf deinem eigenen Server würde ich über die Datenbankvariante bevorzugen mit einer MEMORY Tabelle. Das ganze am besten noch lazy ;)
Inwiefern unterscheiden sich denn Memory Tabellen von normalen Tabellen? ;) Vom Namen her - klar, wahrscheinlich arbeiten sie im RAM - aber wie erstellt man sie? ;) Behandelt man sie irgendwie anders? -
Naja, der Unerschied ist halt gerade, dass sie im RAM sind. Das hat zwei Folgen: Schreiben und Lesen geht super schnell, schneller als bei normalen InnoDB oder MyISAM Tabllen. Und: Wenn der MySQL Daemon crasht sind die Daten in der Tabelle weg. Das sollte einen bei Sessions aber nicht stören.
Erstellen tust du sie ganz normal ;) -
nikic schrieb:
Naja, der Unerschied ist halt gerade, dass sie im RAM sind. Das hat zwei Folgen: Schreiben und Lesen geht super schnell, schneller als bei normalen InnoDB oder MyISAM Tabllen. Und: Wenn der MySQL Daemon crasht sind die Daten in der Tabelle weg. Das sollte einen bei Sessions aber nicht stören.
Erstellen tust du sie ganz normal ;)
Dann lag ich mit meiner Vermutung richtig. ;) Stimmt, Sessiondaten sind (oder sollten zumindest) weitesgehends egal sein, jedenfalls der Absturz und der Verlust derselben sollte nicht größere Probleme als ein Re-Login-Zwang verursachen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage