Funktionen von APC

FunktionenAPC kann nicht nur Dateien vorkompilieren und zwischenspeichern, sondern auch Variablen und Konstanten in einem Zwischenspeicher ablegen, und sie somit über mehrere Aufrufe hinweg verfügbar machen. Neben dem Auslesen, Speichern und Löschen von Variablen, Objekten und Konstanten, gibt es noch die Möglichkeit Informationen über den Zustand des Zwischenspeichers und darin gespeicherten Daten herauszufinden. Außerdem gibt es noch eine Funktion, die den Zwischenspeicher leert.

Variablen und Objekte

Variablen, Objekte und Konstanten werden im sog. User Cache abgelegt, dabei muss ihnen ein einzigartiger Schlüssel zugewiesen werden. APC stellt Funktionen zum Speichern, Auslesen, Überschreiben und Löschen bereit. Bei Variablen und Objekten lässt sich eine Lebensdauer angeben, diese wird bei jedem Aufruf überprüft, wurde sie überschritten, wird die Variable aus dem Zwischenspeicher gelöscht. Hat die Lebensdauer den Wert 0 (Standard), ist sie unendlich, die Variable wird also nicht automatisch gelöscht (außer natürlich bei einem Neustart/Leeren des Zwischenspeichers).

Hinweis: Es ist nicht möglich, ein Feld von Objekten im Zwischenspeicher abzulegen. Das Feld wird zwar gespeichert, die darin befindlichen Objekte haben aber alle den Wert NULL. Es gibt allerdings einen Weg, trotzdem ein Feld von Objekten zu speichern, und zwar mit dem ArrayObject.

Speichern von Variablen/Objekten

bool apc_add(string Schlüssel, mixed Variable
             [, int Lebensdauer = 0])
bool apc_store(string Schlüssel, mixed Variable
               [, int Lebensdauer = 0])

Diese Funktionen speichern eine Variable bzw. ein Objekt im Zwischenspeicher, der erste Parameter ist der Schlüssel/Name unter dem diese abgelegt wird. Der zweite Parameter ist die Variable selbst, der dritte (optional) gibt die Lebensdauer an. Die Funktion apc_store überschreibt eine Variable, wenn der Schlüssel bereits vorhanden ist, apc_add gibt in diesem Fall false zurück, ohne die Variable zu überschreiben.

// true (wenn die Variable noch nicht im Zwischenspeicher ist)
var_dump(apc_add('hallo', 'Hallo Welt'));
// false, da der Schlüssel 'hallo' bereits existiert.
var_dump(apc_add('hallo', 123));
 
echo apc_fetch('hallo'); // Hallo Welt
 
// apc_store überschreibt die Variable, wenn der Schlüssel bereits
// existiert.
apc_store('hallo', 456);
echo apc_fetch('hallo'); // 456

Auslesen von Variablen/Objekten

mixed apc_fetch(string Schlüssel [, bool &Erfolg])
array apc_fetch(array Schlüssel [, bool &Erfolg])

Mit apc_fetch können die Daten wieder aus dem Zwischenspeicher ausgelesen werden. Der erste Parameter ist der Schlüssel, unter dem die Variable abgelegt ist. Die ausgelesenen Daten werden zurückgegeben, konnten keine Daten ausgelesen werden (z.B. weil der Schlüssel nicht existiert) wird false zurückgegeben.

Im zweiten Parameter kann eine Referenz auf eine Variable angegeben werden, die von APC bei erfolgreichem Auslesen auf true, ansonsten auf false gesetzt wird. Das ist ganz nützlich, da man ja auch Variablen vom Typ boolean (true oder false) im Zwischenspeicher ablegen kann, und man sonst nicht herausfinden könnte, ob der Rückgabewert false nun bedeutet das die Variable den Wert false hat, oder die Variable nicht ausgelesen werden konnte.

apc_store('Test', 123);
echo "Inhalt von 'Test': ", apc_fetch('Test'); // 123
$erfolg = false;
 
echo "Inhalt von 'ExistiertNicht': ";
var_dump(apc_fetch('ExistiertNicht', $erfolg)); // false
 
echo '$erfolg: ';
var_dump($erfolg); // false

Es ist auch möglich mehrere Schlüssel auf einmal abzufragen, dazu übergibt man anstatt eines Schlüssels einfach ein Feld mit mehreren Schlüsseln.

var_dump(apc_fetch('Test', 'hallo'));

APC gibt dann ein Feld (Schlüssel => Wert) zurück. Wenn einer der Schlüssel ausgelesen werden konnte, gilt die Abfrage als erfolgreich, konnte kein Schlüssel ausgelesen werden, wird ein leeres Feld zurückgegeben, und $Erfolg ist trotzdem true.

array(2) { ["Test"]=>  int(123)
           ["hallo"]=>  int(456)
}

Löschen von Variablen/Objekten

bool apc_delete(string Schlüssel)

Mit apc_delete können Variablen/Objekte wieder aus dem Zwischenspeicher gelöscht werden.

Konstanten

Mit der Funktion apc_define_constants lässt sich ein Satz von Konstanten im Zwischenspeicher speichern. Mittels apc_load_constants kann dieser wieder ausgelesen werden. Jeder Satz von Konstanten bekommt einen Namen, es ist also auch möglich mehrere verschiedene Sätze von Konstanten zu speichern.

Das erstmalige Definieren der Konstanten, bzw. deren Eintragung im Zwischenspeicher dauert etwa doppelt so lange, als würde man define verwenden, das Laden der Konstanten aus dem Zwischenspeicher ist allerdings drei mal so schnell wie define. Anschließend können die Konstanten verwendet werden, wie sonst auch.

Definieren von Konstanten

bool apc_define_constants(string Schlüssel, array Konstanten
                          [, bool Groß- u. Kleinschreibung beachten = true])

Die Funktion apc_define_constants erwartet zwei Parameter. Der erste ist der Name/Schlüssel unter dem der Satz von Konstanten gespeichert wird, der zweite ist ein Feld, welches die Konstanten enthält. Der dritte Parameter ist optional, und gibt an ob bei den Konstantennamen die Groß- und Kleinschreibung beachtet werden soll (also ob KONSTANTE und Konstante ein und die selbe Konstante sind (false) oder nicht (true)).

$konstanten = array ('ROT'   => '#f00',
                     'GRUEN' => '#0f0',
                     'BLAU'  => '#00f');
apc_define_constants('farben', $konstanten);

Bei Erfolg gibt die Funktion true zurück, ansonsten false.

Konstanten auslesen

bool apc_load_constants(string Schlüssel
                        [, bool Groß- u. Kleinschreibung beachten = true])

Mit apc_load_constants können die gespeicherten Konstanten wieder ausgelesen werden, sie werden beim Auslesen automatisch definiert. Der erste Parameter gibt wieder den Schlüssel/Namen des Konstantensatzes an, der zweite, optionale Parameter, gibt an ob die Groß- und Kleinschreibung beachtet wird. Bei Erfolg wird true, ansonsten false zurückgegeben.

apc_load_constants('farben');
echo "Rot: ", ROT;

Konstanten aus dem Zwischenspeicher entfernen

Um einen Satz von Konstanten wieder zu entfernen, kann die Funktion apc_delete verwendet werden.

apc_delete('farben');

Informationen über den Zwischenspeicher

array apc_cache_info([string Typ[, bool Limitiert]])
array apc_sma_info([bool Limitiert])

Die Funktion apc_cache_info kann verwendet werden, um Informationen über den Zwischenspeicher und darin enthaltene Dateien, Variablen, etc. zu erhalten. Der Typ gibt an, welche Art von Informationen zurückgegeben werden soll. Der Parameter Limitiert bestimmt, ob nur generelle Informationen (true) oder auch ein Feld mit Informationen über die einzelnen Dateien/Variablen (false) zurückgegeben werden soll.

Folgende Typen stehen zur Verfügung:

  • Beispielausgabe von apc_cache_info('user');"user": Informationen über den “User Cache”, also die Anzahl der gespeicherten Variablen, noch freie (verfügbare) Einträge, wie oft Variablen gespeichert wurden, wie viel Speicher die Variablen verbrauchen, etc. Ist die Ausgabe nicht limitiert, werden auch noch ausführliche Informationen über jede einzelne Variable zu dem Feld hinzugefügt.
  • Beispielausgabe von apc_cache_info('user');"filehits": Eine Liste von Dateien die für den aktuellen Aufruf aus dem Zwischenspeicher geholt wurden. (Funktioniert nur, wenn --enable-apc-filehits bei der Installation angegeben wurde.)
  • Beispielausgabe von apc_cache_info();Datei-Speicher: Wenn kein Typ oder ein ungültiger Typ angegeben wurde, gibt die Funktion Informationen über den Dateispeicher zurück. Zum Beispiel die Größe des Speichers, die Anzahl der Dateien, wie oft eine Datei nicht im Cache gefunden wurde, etc. Wenn die Ausgabe nicht limitiert ist, wird auch ein Feld mit Informationen über alle gespeicherten Dateien zurückgeliefert.

Beispielausgabe von apc_sma_info();Die Funktion apc_sma_info hingegen liefert Informationen über den benutzten Speicher. Sie gibt ein Feld zurück, mit Informationen darüber wie viele Segmente verwendet werden, wie groß diese sind, und wie viel Speicher insgesamt zur Verfügung steht. Ist die Ausgabe nicht limitiert, werden auch noch Informationen über die einzelnen Segmente zurückgegeben.

Zwischenspeicher leeren

bool apc_clear_cache([string Typ])

Um den Zwischenspeicher zu leeren, kann die Funktion apc_clear_cache verwendet werden. Hat der Parameter den Wert user, wird der Variablen/Objekte/Konstanten-Zwischenspeicher geleert, ansonsten wird der Zwischenspeicher für Dateien geleert. Gibt true bei Erfolg zurück, ansonsten false.

apc_clear_cache();

Datei kompilieren und zwischenspeichern

bool apc_compile_file(string Dateiname)

Mit apc_compile_file wird eine Datei kompiliert und im Zwischenspeicher gespeichert. In der Konfiguration eingestellte Filter werden dabei umgangen.

if (apc_compile_file('datei.php')) {
    echo "Datei >datei.php< wurde im Zwischenspeicher abgelegt.";
}
else {
    echo "Fehler: Datei konnte nicht im Zwischenspeicher abgelegt werden.";
}

Die Funktion gibt bei Erfolg true, im Fehlerfall false zurück.

Überprüfen ob APC verfügbar ist

Wenn man überprüfen möchte, ob APC verfügbar ist, kann man mit extension_loaded einfach überprüfen ob die Erweiterung geladen ist. Wenn APC geladen ist, gibt die Funktion true zurück, ansonsten false.

var_dump(extension_loaded('apc')); // true oder false

Es gibt noch ein paar andere APC-Funktionen, wie beispielsweise apc_inc/apc_dec, diese sind allerdings leider (noch) nicht dokumentiert, weswegen ich diese hier nicht erklären werde.

Informationen

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung bis jetzt)
Loading ... Loading ...
Kategorie: PHP
Ansichten: 3.615

Kommentare

Keine Kommentare bis jetzt.

Kommentar schreiben

XHTML: Folgende Elemente sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Angetrieben durch Wordpress Thema erstellt von Antu