Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Daten in PHP SESSION zwischenspeichern oder jedes Mal von db abfragen?

Wenn Ihre Daten auf allen Seiten verwendet werden und für alle Benutzer gleich sind, würde ich sie nicht in $_SESSION zwischenspeichern (was bedeutet, dass für jeden Benutzer eine andere Kopie dieser Daten vorhanden ist), sondern mit einem anderen Mechanismus, wie :

  • Datei
  • Im Speicher, zum Beispiel mit APC (wenn nur 1 Server)
  • Im Speicher, zum Beispiel mit memcached (wenn Sie mehrere Server haben)
  • Wenn Ihre Daten lange Berechnungen erfordern oder mehrere DB-Abfragen abgerufen werden müssen, könnte das Zwischenspeichern in der Datenbank eine weitere Möglichkeit sein (würde nur 1 Abfrage zurückholen und weniger Berechnungen bedeuten)


Wenn Ihre Daten nicht für jeden Benutzer gleich sind (was in Ihrer Situation der Fall zu sein scheint, da Sie Namen, Geburtsdaten usw. zwischenspeichern) :

  • Ich würde sicherstellen, dass ich nur das Zwischenspeichere, was notwendig ist
  • Sobald Sie nur wenige Daten zwischenspeichern müssen, sollte es in Ordnung sein, sie in die Sitzung zu versetzen
  • Wenn Sie wirklich so viele Benutzer haben, werden Sie wahrscheinlich einige andere Skalierbarkeitsprobleme haben und höchstwahrscheinlich sowieso so etwas wie memcached verwenden; was bedeutet, dass Sie eine andere Art des Cachings haben werden;-)

Als Nebenbemerkung:Wenn Sie immer wieder dieselbe Abfrage durchführen, sollte Ihr DB-Server sie selbst zwischenspeichern (für MySQL würde sie in den "Abfrage-Cache "); also wäre es nicht so schlimm, wie Sie denken, nehme ich an -- auch wenn nicht so sehr optimiert ^^