Grundsatz Frage zu PHP Objekten

martin

Well-Known Member
Hi

also ich hab folgendes Problem mit PHP Objekten. Und zwar möchte ich erreichen, dass durch ein php Script, welches ich auf dem Server direkt auf der Konsole ausführe, ein Objekt erzeugt wird (das ist kein Problem und funktioniert tadellos :) ).
So jetzt gibt es also dieses Objekt, aber wenn ich da richtig durchsteige, ist dieses Objekt nur in diesem Script zugänglich, oder irre ich mich da?
Ich möchte nämlich erreichen, dass sämtliche Besucher der Webseite "Zugriff" auf dieses Objekt erhalten, also Eigenschaften auslesen und auch ändern können.
Beispiel test.php (da wird das Objekt erzeugt)
<?php

class testKlasse{

var $teststring = "Hallo Welt!";

}

$testKlasse = new testKlasse();
?>
so jetzt hab ich noch eine Datei namens test1.php und möchte von der aus diesen Teststring ändern, und zwar so, dass eben immer nur dieses eine Objekt verwendet wird.
Sicher weiß jemand von euch genau, ob das geht, oder nicht. Falls das in php nicht möglich ist, was ist die Alternative?

danke
 
Zuletzt bearbeitet:
Dazu müsste dein Objekt persistent sein. Die Existenz ist nicht auf irgendeine Datei sondern auf einen Skriptdurchlauf bestimmt. Du könntest das Objeakt mit serialize() serialisieren und ein eine Datei oder Datenbank speichern.

Ich würde es in eine Datei machen und mit einem Lock öffnen. Nach dem Durchlauf wird die Datei dann von dir überschrieben. Durch den Lock sorgst du dafür, dass das Objekt nicht simultan gelesen und geschrieben wird.

Im Grunde genommen kann ich mir aber keine sinnvolle Anwendung für so etwas vorstellen.
 
danke für die schnelle Antwort Kamikaze

also sowas hab ich mir auch schon gedacht, wahrscheinlich würde es sogar auch über die Session Variable funktionieren... hmmm... Sinn der Sache wäre/ist eigentlich nur der, Datenbankoperationen und somit Prozessorleistung zu "sparen". Wobei ich mir nicht sicher bin, ob das überhaupt was bringt (was ist schneller? der Zugriff auf ein Objekt im Speicher oder eine DB Abfrage).
Also dieser Zugriff passiert ziemlich oft (>10mal / Sek.). Zur Zeit läuft es alles wie gesagt direkt an die Datenbank und ich dachte mir evtl. könnte ich prozessorlast sparen, wenn ich gewisse rechenoperationen nicht gleich in die DB speichere, sondern nur die Ergebnisse am Schluss. Aber je mehr ich darüber nachdenke, desto blöder erscheint mir mein Vorhaben.
 
Wenn die Datenmenge klein ist, macht das serialisieren und in eine Session-Variable tun möglicherweise Sinn. Ich bezweifle das aber, da die Header-Begrenzung recht schnell zuschlägt.

Aber wenn ich Performance-gewinne haben will, dann cache ich die Ergebnisse besonders aufwändiger Queries.

Dazu speichere ich das serialisierte Ergebnis des Query (beziehungsweise die fertig aufbereiteten Daten) in serialisierter Form zusammen mit einer md5-Summe über den Query und 2 Timestamps (letzter Zugriff, Zeit des Anlegens) in einer Tabelle.

Dann braucht man nur noch am Ende des Skripts (nachdem das </html> geschickt wurde) alte oder lange nicht verwendete Daten wegzuräumen.

Die md5-Summe fungiert hier als Primärschlüssel.
 
Zuletzt bearbeitet:
Ich denke nicht, das Sessions wesentlich performanter sind, da bei Session je eine Datei angelegt wird, in die m.W. die Daten seriell geschrieben und wieder eingelesen werden. Wenn das Filesystem die Aktion im Cache/Speicher macht/machen kann, sollte das andererseits recht fix gehen.
 
Ich würde auch die Session vorschlagen - die maximale Dateigröße lässt sich - sofern du zugriff drauf hast - ja in der php.ini einstellen. Allerdings, wenn nicht und der Speicher wird wirklich eng, ist wohl eine Flatfile am sinnvollsten.

Edit:

Es gibt seit PHP5 Sichtbarkeits-Qualifier in PHP. Nutze sie. "var" ist m.W.n. obsolet.
 
Zuletzt bearbeitet:
Zurück
Oben