2010-12-17 10 views
0

Ich möchte ein bestimmtes Objekt 'statisch' zwischen verschiedenen Läufen des PHP-Skript, um die Leistung meiner Skripte zu optimieren und vermeiden Sie die Initialisierung Hit, die schwer ist. Gibt es eine Möglichkeit, dies zu tun?PHP-Objekt remanent zwischen Script-Lauf

+0

Warum nicht den Cache verwenden? ACP könnte nützlich sein. – joksnet

+0

ACP ???? Hilf mir. – millebii

+0

https://encrypted.google.com/search?hl=de&q=php+apc erster Treffer (oder dritter für Wikipedia). –

Antwort

2

Sie können es in die Sitzung des Benutzers setzen. Stellen Sie sicher, obwohl, dass die Klasse vor session_start deklariert wird():

require 'heavy_class.php'; 
session_start(); 

$_SESSION['heavy'] = new HeavyClass; 
+0

sieht gut aus. Ich werde diese Methode versuchen und antworten, wenn ich den Effekt sehe. – millebii

+0

Funktioniert gut, aber es ist tatsächlich etwas schlechter, sieht aus wie meine Init-Zeit ist niedriger als Serialisierung/Deserialisierung Ansatz. – millebii

1

Serialize das Objekt und speichern Sie es in Sitzung :). Um es wieder zu verwenden, verwenden Sie unseren Benutzer.

2

Sie können das Objekt serialisieren und dann entweder in einer lokalen Datei oder in einer Datenbank speichern. Dies geschieht am besten mit der php-Funktion

Sie verwenden dann unserialize(), um das Objekt wiederherzustellen.

Es gibt einige "gotchas", so dass die Klasse des Objekts für das ausführende Skript verfügbar sein muss.

Dies ruft die magischen Methoden auf dem Objekt auf, das serialisiert wird __sleep() und __wakeup, wenn es serialisiert bzw. unserialisiert ist. Bei diesen Methoden sollte eine Datenbankinitialisierung stattfinden.

Link zu dem php docs: http://php.net/manual/en/function.serialize.php

+0

+1, so dass ich alle Sitzungslösungen gleichzeitig ansprechen konnte: Die Sitzung erstellt LESS-Objekte, aber kein EINZIGES Objekt. Wenn das Ziel darin besteht, ein einzelnes Objekt zu haben, müssen Sie etwas anderes tun. Da die Sitzung benutzerspezifisch ist. – DampeS8N

1

Haften Sie es in einer Sitzung, es es für Sie automatisch serialisiert werden. Sie können die magischen Methoden __wakeup und __sleep verwenden, um Datenbankverbindungen und ähnliches zu handhaben, aber Sie können Datenträgertreffer vermeiden.

Verwandte Themen