Einrichten von Memcached unter CentOS
- Themen:
- Cache
Erstellt für:
- Experte
- Admin
- Entwickler
Dieser Abschnitt enthält Anweisungen zur Installation von memcached unter CentOS. Weitere Informationen finden Sie im memcached-Wiki.
Da PHP keine native Unterstützung für memcache hat, müssen Sie eine Erweiterung für PHP installieren, um es zu verwenden. Es stehen zwei PHP-Erweiterungen zur Verfügung und es ist wichtig zu decodieren welche verwendet werden sollen:
-
memcache
(kein D) - eine ältere, aber beliebte Erweiterung, die nicht regelmäßig gepflegt wird.
Diememcache
-Erweiterung funktioniert derzeit nicht mit PHP 7. Siehe PHP-Dokumentation für memcache.Der genaue Name ist für CentOS
php-pecl-memcache
. -
memcached
(mit einemd
) - eine neuere und gepflegte Erweiterung, die mit PHP 7 kompatibel ist. Siehe PHP-Dokumentation für memcached.Der genaue Name ist für CentOS
php-pecl-memcached
.
Installieren und Konfigurieren von Memcached unter CentOS
Um memcached unter CentOS zu installieren, führen Sie die folgenden Aufgaben als Benutzer mit root
Berechtigungen aus:
-
Installieren Sie memcached und seine Abhängigkeiten:
yum -y update
yum install -y libevent libevent-devel
yum install -y memcached
yum install -y php-pecl-memcache
INFO
Die Syntax der vorherigen Befehle hängt möglicherweise davon ab, welche Paket-Repositorys Sie verwenden. Wenn Sie beispielsweise webtatic und PHP 5.6 verwenden, geben Sieyum install -y php56w-pecl-memcache
ein. Verwenden Sieyum search memcache|grep php
, um den entsprechenden Paketnamen zu finden. -
Ändern Sie die memcached-Konfigurationseinstellung für
CACHESIZE
undOPTIONS
:-
Öffnen Sie
/etc/sysconfig/memcached
in einem Texteditor. -
Suchen Sie den Wert für
CACHESIZE
und ändern Sie ihn auf mindestens 1 GB. Beispiel:CACHESIZE="1GB"
-
Suchen Sie den Wert für
OPTIONS
und ändern Sie ihn inlocalhost
oder127.0.0.1
-
-
Speichern Sie Ihre Änderungen in
memcached
und beenden Sie den Texteditor. -
Starten Sie memcached neu.
service memcached restart
-
Starten Sie den Webserver neu.
Für Apache:
service httpd restart
-
Fahren Sie mit dem nächsten Abschnitt fort.
Überprüfen der Funktionsweise von Memcached vor der Installation von Commerce
Adobe empfiehlt, memcached zu testen, um sicherzustellen, dass es funktioniert, bevor Sie Commerce installieren. Dies dauert nur wenige Minuten und kann die Fehlerbehebung später vereinfachen.
Überprüfen, ob der zwischengespeicherte Inhalt vom Webserver erkannt wird
So überprüfen Sie, ob Memcached vom Webserver erkannt wird:
-
Erstellen Sie eine
phpinfo.php
Datei im Stammverzeichnis des Webservers:<?php // Show all information, defaults to INFO_ALL phpinfo();
-
Navigieren Sie zu dieser Seite in Ihrem Webbrowser.
Beispiel:
http://192.0.2.1/phpinfo.php
-
Stellen Sie sicher, dass memcache wie folgt angezeigt wird:
Stellen Sie sicher, dass Sie memcached Version 3.0.5 oder höher verwenden.
Wenn der memcache nicht angezeigt wird, starten Sie den Webserver neu und aktualisieren Sie die Browser-Seite. Wenn es immer noch nicht angezeigt wird, überprüfen Sie, ob Sie die php-pecl-memcache
-Erweiterung installiert haben.
Erstellen Sie einen Memcache-Test, der aus einer MySQL-Datenbank und einem PHP-Skript besteht
Der Test verwendet eine MySQL-Datenbank, -Tabelle und -Daten, um zu überprüfen, ob Sie die Datenbankdaten abrufen und im Memcache speichern können. Ein PHP-Skript durchsucht zunächst den Cache. Wenn das Ergebnis nicht vorhanden ist, fragt das Skript die Datenbank ab. Nachdem die Abfrage von der ursprünglichen Datenbank erfüllt wurde, speichert das Skript das Ergebnis mithilfe des set
-Befehls im memcache.
Weitere Details zu diesem Test
MySQL-Datenbank erstellen:
mysql -u root -p
Geben Sie an der mysql
Eingabeaufforderung die folgenden Befehle ein:
create database memcache_test;
GRANT ALL ON memcache_test.* TO memcache_test@localhost IDENTIFIED BY 'memcache_test';
use memcache_test;
create table example (id int, name varchar(30));
insert into example values (1, "new_data");
exit
Erstellen Sie cache-test.php
im Stammverzeichnis Ihres Webservers:
$meminstance = new Memcached();
$meminstance->addServer('<memcached hostname or ip>', <memcached port>);
$query = "select id from example where name = 'new_data'";
$querykey = "KEY" . md5($query);
$result = $meminstance->get($querykey);
if (!$result) {
try {
$dbh = new PDO('mysql:host=localhost;dbname=memcache_test','memcache_test','memcache_test');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$result = $dbh->query("select id from example where name = 'new_data'")->fetch();
$meminstance->set($querykey, $result, 0, 600);
print "got result from mysql\n";
return 0;
} catch (PDOException $e) {
die($e->getMessage());
}
}
print "got result from memcached\n";
return 0;
Dabei ist <memcached hostname or ip>
entweder localhost
, 127.0.0.1
oder der Hostname oder die IP-Adresse des Memcaches. Der <memcached port>
ist der Listen-Port. Standardmäßig ist dies 11211
.
Führen Sie das Skript über die Befehlszeile aus.
cd <web server docroot>
php cache-test.php
Das erste Ergebnis ist got result from mysql
. Das bedeutet, dass der Schlüssel nicht in memcached vorhanden war, sondern von MySQL abgerufen wurde.
Das zweite Ergebnis ist got result from memcached
, das überprüft, ob der Wert erfolgreich in memcached gespeichert wurde.
Schließlich können Sie die Memcache-Schlüssel mithilfe von Telnet anzeigen:
telnet localhost <memcache port>
Geben Sie bei der Eingabeaufforderung Folgendes ein
stats items
Das Ergebnis ähnelt dem folgenden:
STAT items:3:number 1
STAT items:3:age 1075
STAT items:3:evicted 0
STAT items:3:evicted_nonzero 0
STAT items:3:evicted_time 0
STAT items:3:outofmemory 0
STAT items:3:tailrepairs 0
Leeren Sie den Memcache-Speicher und beenden Sie Telnet:
flush_all
quit