Globale Objekte / Resourcen / Cache
Christopher
- php
1 dedlfix
Guten Tag,
seit dem ich das erste mal mit PHP zu tun hatte, fehlt mir stets so eine Art Application-Server.
Oder, in der kleinsten Auspraegung, zumindest eine Moeglichkeit, um Daten - vor allem zustandsbehaftete Objekte - global fuer alle Benutzer ohne grosse Bemuehungen zu Verfuegung zu stellen.
Moechte ich Daten ueber einen laengeren Zeitraum zu Verfuegung haben, so bleibt mir lediglich die Moeglichkeit auf Client-bezogene Sessions zurueckgreifen - das ist jedoch fuer mein Anliegen nicht ausreichend, da sie fuer jeden Benutzer einzeln existieren.
Um nun mehr Praxisnaehe ins Spiel zu bringen: Mein Wunsch ist es, - zum Beispiel - einen globalen Cache fuer _alle_ Benutzer zu haben, der jedem Benutzer jeder Zeit zu Verfuegung steht und optimaler Weise nicht in der Datenbank hinterlegt wird.
Hierbei wuerde ich so vorgehen, dass ich eine Singelton-Klasse (nennen wir sie mal GlobalResource) erstelle, die eine Menge an Objekten halten kann. Diese werden serialisiert in Dateien abgespeichert. Bei einem Zugriff wird das entsprechende Objekt wieder deserialisiert und dem Client zu Verfuegung gestellt.
Nun, warum ich das hier poste.. es geht mir um Anregungen. Gibt es vielleicht ganz andere Moeglichkeiten von denen ich nichts weiss? Koennte man evtl. sogar den Apache erweitern? Oder gibt es vielleicht PHP-Extensions oder einfach bereits vorhandene Bibliotheken?
Das Ziel ist es nicht das produktiv anzuwenden, es geht mir eher um reines Interesse.
Danke fuer das Lesen,
Christopher
echo $begrüßung;
Moechte ich Daten ueber einen laengeren Zeitraum zu Verfuegung haben, so bleibt mir lediglich die Moeglichkeit auf Client-bezogene Sessions zurueckgreifen - das ist jedoch fuer mein Anliegen nicht ausreichend, da sie fuer jeden Benutzer einzeln existieren.
Man kann einer Session auch eine selbstvergebene ID übergeben. Wenn die im Script hart kodiert ist, hast du eine globale Session. Das hat dann den Nachteil, dass du nur eine Session auf einmal geöffnet haben kannst. Du musst also die Zugriffe auf die globalen Session-Daten und die Client-bezogenen so organisieren, dass nicht ständig session_write_close() und session_start() aufzurufen ist, um auf das jeweils andere System zu wechseln.
Überhaupt ist bei den Sessions zu beachten, dass parallele Zugriffe warten, wenn grad einer die Session geöffnet und noch nicht wieder freigegeben hat.
Um nun mehr Praxisnaehe ins Spiel zu bringen: Mein Wunsch ist es, - zum Beispiel - einen globalen Cache fuer _alle_ Benutzer zu haben, der jedem Benutzer jeder Zeit zu Verfuegung steht und optimaler Weise nicht in der Datenbank hinterlegt wird.
Optimal wäre wohl ein Shared Memory oder ein anderer Cache, der die Daten im Speicher hält. Beides gibt es bei PHP optional. Siehe PHP-Handbuch und phpinfo()
Methoden, die einen Dateizugriff verwenden, müssen gegenüber dem Datenbankzugriff genau untersucht werden. Mitunter spielen noch andere Caches eine Rolle, sowohl beim Verfälschen der Labormessergebnisse als auch in der Praxis, wenn trotz guter Laborwerte der Cache überläuft.
Koennte man evtl. sogar den Apache erweitern?
Wenn die Sache bidirektional ablaufen soll, brauchst du eine Möglichkeit, dem Apachen einen zu speichernden Wert zu übergeben. Und wenn man nicht lesend auf CGI-Variablen zugreifen möchte, und der Apache dafür sämtliche Daten immer darin bereitstellen müssten, brauchst du auch noch eine andere Lesemöglichkeit. Ohne PHP-Ergänzung geht da also auch nichts.
echo "$verabschiedung $name";