2012-04-03 4 views
1

Was ich aus dem Lesen der Quelle und Dokumentation von mehreren PHP-Frameworks verstehen konnte, ist, dass sie im Allgemeinen nicht persistieren, außer für das, was Sie persönlich cachen oder in eine $ _SESSION-Variable werfen. Warum ist das? Es scheint eine Verschwendung zu sein, das Framework für jede einzelne Anfrage im Wesentlichen zu initialisieren. Wäre es nicht besser, zumindest einige Core-Objekte und Variablen zu serialisieren und zu speichern, um Verarbeitung und Zeit zu sparen?

Zuerst dachte ich, das sei eher subjektiv und vermied es zu fragen, aber alles, was ich gelesen habe, spricht nicht wirklich darüber, also muss etwas offensichtlich sein, das ich vermisse.

Die einzige wirkliche Erwähnung/Diskussion, die ich davon gefunden habe, ist here, die meine Frage nicht direkt beantwortet und von denen einige über meinen Kopf ein wenig gehen.Warum bleiben MVC-Frameworks in PHP nicht zwischen Anfragen bestehen?

Edit for Clarification: Ich frage nicht nach den inneren Funktionen von PHP, ich weiß, wie Persistenz funktioniert (dh wird nicht bestehen, wenn Sie es über Zwischenspeicherung oder Session Vars machen), frage ich, warum PHP-Frameworks nicht tue dies für ihre Kernobjekte. Wieder scheint es mir subjektiv, aber da ich fast nichts davon gelesen habe und es ziemlich üblich zu sein scheint, würde ich gerne wissen, was ich vermisse.

+0

Nichts bleibt in PHP bestehen, es sei denn, Sie fordern explizit an, dass es in '$ _SESSION' oder durch einen anderen Caching-Mechanismus persistiert. –

+0

Ich stelle fest, dass, was ich frage ist, warum Frameworks diese Mechanismen nicht verwenden, um Core-Objekte zu persistieren, die in der Regel während der Initialisierung des Frameworks instanziiert werden? – hamalnamal

Antwort

2

Speicher:

Die meisten Frameworks diese Kernmechanismen in $ _SESSION nicht speichern aufgrund von Speicher betrifft. Frameworks generieren oft Variablen/Objekte, die mehrere Megabyte an Informationen enthalten können. Das hört sich vielleicht nicht nach viel an, aber skaliere das auf ein paar tausend Nutzer und du hast ein Problem.

Daten „Frische“

Die zweite Ausgabe mit Framework-Komponenten in dem Speicher schiebend sind, dass sie sehr schnell veralten können. Anstatt ein Objekt aus dem Speicher zu ziehen, zu überprüfen, ob es veraltet ist, und es dann neu zu erstellen (wenn es tatsächlich veraltet ist) ist weniger effizient (die meiste Zeit), als es nur mit jeder Anfrage neu zu erstellen.

Ich hoffe, dies klärt die Dinge.

+0

Welche Art von Objekten oder Daten (oder in welchem ​​Kontext) wäre effizienter für die Objekte/Daten? – hamalnamal

+1

Das hängt wirklich davon ab. Normalerweise werden IDs hauptsächlich in Sitzungen gespeichert (z. B. Benutzer-ID). Das Ziel besteht darin, die Größe der Daten so klein wie möglich zu halten, so dass kleine Daten, die zum Abrufen von Objekten verwendet werden können, normalerweise im Gegensatz zu ganzen Datenbankmodellen oder Objekten selbst gespeichert werden. –

+0

Und wie wäre es mit Caching-Objekten (wie zum Beispiel eine serialisierte Version eines großen Objekts zu speichern, sagen wir in einer Textdatei oder etwas), in welchem ​​Kontext würde das im Allgemeinen getan werden? – hamalnamal

0

Wenn Daten zwischen Serveranforderungen persistieren sollen, müssen Sie Cookies/Sitzungen verwenden oder Ihre Daten in einer Datenbank speichern. So funktioniert es. PHP kann keine Daten für die Verwendung zwischen Serveranforderungen speichern.

Einige Frameworks können Core-Objekte in einer Datenbank oder in einer lokalen Datei auf der Festplatte speichern, aber dies hängt vom Framework ab.

Verwandte Themen