Heim  >  Artikel  >  Backend-Entwicklung  >  Installation und Nutzung von php-Memcached

Installation und Nutzung von php-Memcached

伊谢尔伦
伊谢尔伦Original
2016-11-21 17:34:412626Durchsuche

1. Einführung und Installation

Memcached ist ein leistungsstarkes verteiltes Speicherobjekt-Caching-System, das normalerweise zur Reduzierung des Datenbankladedrucks verwendet wird, um die Reaktionsgeschwindigkeit dynamischer Webanwendungen zu verbessern.

Diese Erweiterung nutzt die von der libmemcached-Bibliothek bereitgestellte API, um mit dem Memcached-Server zu interagieren. Es bietet auch einen Sitzungshandler (im Cache gespeichert).

Informationen zur Memcached-Installation finden Sie in diesem Artikel: Installation und Konfiguration von Memcached in Ubuntu.

Bevor Sie die PHP-Erweiterung memcached installieren, müssen Sie libmemcached installieren, die lokale C/C-Client-Bibliothek von memcached.

Bevor Sie libmemcached installieren, müssen Sie zunächst libcloog-ppl0 installieren, andernfalls tritt während des Kompilierungs- und Installationsprozesses ein Fehler auf:

sudo apt-get install libcloog-ppl0

Laden Sie es dann von hier herunter: http://libmemcached. org/libMemcached.html Entpacken Sie das erforderliche libmemcached-Quellcode-Installationspaket in das angegebene Verzeichnis, geben Sie das Verzeichnis ein und führen Sie dann die folgenden Anweisungen aus:

./configure --prefix=/usr/local/libmemcached
make
sudo make install

Anschließend können Sie die erforderliche PHP-Memcached-Erweiterung installieren Quellcode von hier Installationspaket: http://pecl.php.net/package/memcached, entpacken Sie es in das angegebene Verzeichnis, geben Sie das Verzeichnis ein und führen Sie dann die folgenden Anweisungen aus:

phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached
make
sudo make install

Ein Fehler kann während des Installationsprozesses gemeldet werden:

未知类型名称:memcached_server_instance_st

führt dazu, dass make fehlschlägt. Die Lösung lautet wie folgt:

Suchen Sie diese Datei im Dekomprimierungsverzeichnis der Memcached-Erweiterung: php_libmemcached_compat.h und dann Fügen Sie die folgende Zeile hinzu

typedef const struct memcached_server_st *memcached_server_instance_st;

Machen Sie es noch einmal und es wird in Ordnung sein.

Fügen Sie nach erfolgreicher Installation extension=memcacached in php.ini hinzu, starten Sie dann Apache neu, überprüfen Sie phpinfo und sehen Sie sich den folgenden Abschnitt an

Installation und Nutzung von php-Memcached

Beweisen Sie, dass die Installation erfolgreich war.

2. Timeout

Einige Speicherbefehle enthalten einen Ablaufwert (im Zusammenhang mit einem Element oder einer Client-Vorgangsanforderung), wenn sie an den Server gesendet werden. Für alle derartigen Verwendungen kann der tatsächlich gesendete Wert ein Unix-Zeitstempel (eine ganze Zahl von Sekunden seit dem 1. Januar 1970 bis zur Ablaufzeit) oder eine Zahl in Sekunden von jetzt an sein. Im letzteren Fall darf diese Anzahl von Sekunden 60×60×24×30 (die Anzahl von Sekunden in 30 Tagen) nicht überschreiten; wenn der ungültige Wert größer als dieser Wert ist, wird er vom Server als echter Unix-Zeitstempel behandelt ein Offset von der aktuellen Zeit.

Wenn der Ablaufwert auf 0 (Standard) gesetzt ist, läuft das Element nie ab (es kann jedoch vom Server gelöscht werden, um Platz für andere neue Elemente zu reservieren).

3. Rückrufe

1. Ergebnisrückrufe

Ergebnisrückrufe sind das Ergebnis nach dem Abrufen des Elements über Memcached::getDelayed() oder Memcached::getDelayedBykey(). Methode wird einmal für jedes Element in der Menge aufgerufen. Die Rückruffunktion kann ein Memcached-Objekt und durch ein Array beschriebene Elementinformationen empfangen. Diese Rückruffunktion muss keine Informationen zurückgeben.

Beispiel #1 Ergebnis-Callback-Beispiel

<?php
    $m = new Memcached();
    $m->addServer(&#39;localhost&#39;, 11211);
    $items = array(
        &#39;key1&#39; => &#39;value1&#39;,
        &#39;key2&#39; => &#39;value2&#39;,
        &#39;key3&#39; => &#39;value3&#39;
    );
    $m->setMulti($items);
    $m->getDelayed(array(&#39;key1&#39;, &#39;key3&#39;), true, &#39;result_cb&#39;);
    function result_cb($memc, $item)
    {
        var_dump($item);
    }
?>

Die Ausgabe der obigen Routine ist ähnlich wie:

array(3) {
  ["key"]=> string(4) "key1"
  ["value"]=> string(6) "value1"
  ["cas"]=> float(49)
}
array(3) {
  ["key"]=> string(4) "key3"
  ["value"]=> string(6) "value3"
  ["cas"]=> float(50)
}

2. Lesen Sie den Cache-Callback durch

Durchlesen Der Cache-Callback wird aufgerufen, wenn ein Element nicht vom Server abgerufen wird. Diese Rückruffunktion empfängt drei Parameter: das Memcached-Objekt, den angeforderten Schlüssel und eine als Referenz übergebene Wertvariable. Diese Rückruffunktion ist für die Entscheidung verantwortlich, einen Standardwert festzulegen, wenn der Schlüssel keinen Wert hat, indem sie „true“ oder „false“ zurückgibt. Wenn der Rückruf „true“ zurückgibt, speichert Memcached den im „ausgehenden Parameter“ (der als Referenz übergebenen Wertvariablen) gespeicherten Wert auf dem Memcached-Server und gibt ihn an die ursprüngliche aufrufende Funktion zurück. Nur Memcached::get() und Memcached::getByKey() unterstützen diese Art von Rückruf, da das Memcache-Protokoll die Bereitstellung von Informationen über nicht abgerufene Schlüssel bei der Anforderung mehrerer Schlüssel nicht unterstützt.

Beispiel #2 Rückrufbeispiel durchlesen

<?php
    $m = new Memcached();
    $m->addServer(&#39;localhost&#39;, 11211);
    $profile_info = $m->get(&#39;user:&#39;.$user_id, &#39;user_info_cb&#39;);
    function user_info_cb($memc, $key, &$value)
    {
        $user_id = substr($key, 5);
        /* 从数据库读取个人信息 */
        /* ... */
        $value = $profile_info;
        return true;
    }
?>

4. Sitzungsunterstützung

memcached bietet einen benutzerdefinierten Sitzungsprozessor, der zum Speichern von Benutzersitzungsdaten im Memcached-Server verwendet werden kann . Intern wird eine vollständig separate Memcached-Instanz verwendet, sodass Sie bei Bedarf einen anderen Serverpool einrichten können. Sitzungsschlüssel werden unter dem Präfix memc.sess.key gespeichert. Beachten Sie dies daher bitte, wenn Sie denselben Serverpool für Sitzungen und normales Caching verwenden. Anmerkung: Ein weiterer Grund, warum die Sitzung vom normalen Cache getrennt wird, besteht darin, dass Ihre Sitzung möglicherweise aus dem Cache geworfen wird, wenn der normale Cache den zwischengespeicherten Server füllt, was dazu führt, dass der Benutzer aus unerklärlichen Gründen getrennt wird.

session.save_handler ist auf „memcached“ gesetzt, um den Sitzungsprozessor von „memcached“ zu aktivieren. session.save_path definiert einen durch Kommas getrennten Sitzungscache-Serverpool im Hostnamen:Port-Stil, zum Beispiel: „sess1:11211, sess2:11211“.

5. Die Memcached-Klasse

stellt den Memcached-Dienst dar Clusterverbindungen.

Memcached::add – Ein Element zu einem neuen Schlüssel hinzufügen

Memcached::addByKey – Ein Element zu einem neuen Schlüssel auf dem angegebenen Server hinzufügen

Memcached::addServer — Fügen Sie einen Server zum Serverpool hinzu

Memcached::addServers – Mehrere Server zum Serverpool hinzufügen

Memcached::append – Daten an vorhandene Elemente anhängen

Memcached::appendByKey – Daten zum angegebenen Server hinzufügen Daten anhängen nachdem das Element existiert

Memcached::cas – Werte vergleichen und austauschen

Memcached::casByKey — Werte auf dem angegebenen Server vergleichen und austauschen

Memcached::__construct — Erstellen Sie eine Memcached-Instanz

Memcached::decrement — Verringern Sie den Wert eines numerischen Elements

Memcached::decrementByKey — Verringern Sie den Wert eines numerischen Elements, der auf einem bestimmten Server gespeichert ist

Memcached: :delete – Ein Element löschen

Memcached::deleteByKey – Ein Element vom angegebenen Server löschen

Memcached::deleteMulti – Mehrere Elemente löschen

Memcached::deleteMultiByKey – Mehrere Elemente von einem bestimmten Server löschen

Memcached::fetch – Nächstes Ergebnis abrufen

Memcached::fetchAll – Alle verbleibenden Ergebnisse abrufen

Memcached::flush – Ungültig machen alle Elemente im Cache

Memcached::get – Element abrufen

Memcached::getAllKeys – Ruft die auf allen Servern gespeicherten Schlüssel ab

Memcached::getByKey – Elemente abrufen von einem angegebenen Server

Memcached::getDelayed – Mehrere Elemente von einem angegebenen Server anfordern

Memcached::getDelayedByKey – Mehrere Elemente von einem angegebenen Server anfordern

Memcached:: getMulti — Mehrere Elemente abrufen

Memcached::getMultiByKey — Mehrere Elemente von einem bestimmten Server abrufen

Memcached::getOption — Optionswert von Memcached abrufen

Memcached::getResultCode — Gibt den Ergebniscode der letzten Operation zurück

Memcached::getResultMessage — Gibt die Ergebnisbeschreibungsnachricht der letzten Operation zurück

Memcached::getServerByKey — Ruft die durch einen Schlüssel zugeordneten Serverinformationen ab

Memcached::getServerList – Ruft die Serverliste im Serverpool ab

Memcached::getStats – Ruft die Statistiken des Serverpools ab

Memcached::getVersion – Ruft die Versionen aller ab Server im Serverpool Information

Memcached::increment – ​​Erhöhen Sie den Wert eines numerischen Elements

Memcached::incrementByKey – Erhöhen Sie den Wert eines numerischen Elements, der auf einem bestimmten Server gespeichert ist

Memcached::isPersistent – ​​Prüfen, ob eine dauerhafte Verbindung zum Memcache verwendet wird

Memcached::isPristine – Prüfen, ob die Instanz kürzlich erstellt wurde

Memcached::prepend – Daten vorne anhängen eines vorhandenen Elements

Memcached::prependByKey – Daten einem vorhandenen Element auf einem bestimmten Server voranstellen

Memcached::quit – Alle offenen Verbindungen schließen

Memcached::replace – Ersetzen Sie das vorhandene Element unter dem Schlüsselelement

Memcached::replaceByKey – Ersetzen Sie das Element unter einem vorhandenen Schlüssel auf einem bestimmten Server

Memcached::resetServerList – Löscht alle Server aus der Serverliste

Memcached::set – Ein Element speichern

Memcached::setByKey – Ein Element auf einem bestimmten Server speichern

Memcached::setMulti – Mehrere Elemente speichern

Memcached ::setMultiByKey – Mehrere Elemente auf einem bestimmten Server speichern

Memcached::setOption – Eine Memcached-Option festlegen

Memcached::setOptions – Memcached-Optionen festlegen

Memcached::setSaslAuthData – Legen Sie die Anmeldeinformationen fest, die für die Authentifizierung verwendet werden sollen

Memcached::touch – Legen Sie einen neuen Ablauf für ein Element fest

Memcached::touchByKey – Legen Sie einen neuen Ablauf für ein Element auf einem bestimmten Server fest


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn