Konfigurera cachelagrade i CentOS
I det här avsnittet finns anvisningar om hur du installerar cachelagrade CentOS. Mer information finns i den cachelagrade wiki.
Eftersom PHP inte har inbyggt stöd för memcache måste du installera ett tillägg för PHP för att kunna använda det. Det finns två PHP-tillägg tillgängliga och det är viktigt att avkoda vilka som ska användas:
-
memcache(no d) - ett äldre men populärt tillägg som inte underhålls regelbundet.
Tilläggetmemcacheför närvarande fungerar inte med PHP 7. Mer information om memcache finns i PHP-dokumentationen.Det exakta namnet är
php-pecl-memcacheför CentOS. -
memcached(med end) - ett nyare och underhållet tillägg som är kompatibelt med PHP 7. Se PHP-dokumentation för cachelagring.Det exakta namnet är
php-pecl-memcachedför CentOS.
Installera och konfigurera cachelagrade i CentOS
Utför följande uppgifter som en användare med behörighet root för att installera som är ansluten till CentOS:
-
Installera cachelagrade filer och dess beroenden:
code language-bash yum -y updatecode language-bash yum install -y libevent libevent-develcode language-bash yum install -y memcachedcode language-bash yum install -y php-pecl-memcachenote info INFO Syntaxen för föregående kommandon kan bero på vilka paketdatabaser du använder. Om du t.ex. använder webbstatistik och PHP 5.6 anger du yum install -y php56w-pecl-memcache. Användyum search memcache|grep phpför att hitta rätt paketnamn. -
Ändra den cachelagrade konfigurationsinställningen för
CACHESIZEochOPTIONS:-
Öppna
/etc/sysconfig/memcachedi en textredigerare. -
Leta reda på värdet för
CACHESIZEoch ändra det till minst 1 GB. Exempel:code language-config CACHESIZE="1GB" -
Leta reda på värdet för
OPTIONSoch ändra det tilllocalhosteller127.0.0.1
-
-
Spara ändringarna i
memcachedoch avsluta textredigeraren. -
Omstarten är cachelagrad.
code language-bash service memcached restart -
Starta om webbservern.
För Apache:
code language-bash service httpd restart -
Fortsätt med nästa avsnitt.
Kontrollera att det finns anslutna verk innan du installerar Commerce
Adobe rekommenderar att du testar cachelagrade filer för att kontrollera att de fungerar innan du installerar Commerce. Det tar bara några minuter och kan förenkla felsökningen senare.
Verifiera att cachelagrade data känns igen av webbservern
Så här verifierar du att cachelagrade data känns igen av webbservern:
-
Skapa en
phpinfo.php-fil i webbserverns dokumentrot:code language-php <?php // Show all information, defaults to INFO_ALL phpinfo(); -
Gå till den sidan i webbläsaren.
Exempel:
http://192.0.2.1/phpinfo.php -
Se till att minnet visas enligt följande:
Kontrollera att du använder den cachelagrade versionen 3.0.5 eller senare.
Om minnet inte visas startar du om webbservern och uppdaterar webbläsarsidan. Om det fortfarande inte visas kontrollerar du att du har installerat tillägget php-pecl-memcache.
Skapa ett memcache-test som består av en MySQL-databas och ett PHP-skript
Testet använder en MySQL-databas, tabell och data för att verifiera att du kan hämta databasdata och lagra dem i memcache. Ett PHP-skript söker först i cachen. Om resultatet inte finns frågar skriptet databasen. När frågan har slutförts av den ursprungliga databasen lagrar skriptet resultatet i memcache med kommandot set.
Skapa MySQL-databasen:
mysql -u root -p
Ange följande kommandon vid mysql-prompten:
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
Skapa cache-test.php i webbserverns dokumentrot:
$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;
Där <memcached hostname or ip> antingen är localhost, 127.0.0.1 eller memcache-värdnamnet eller IP-adressen. <memcached port> är avlyssningsporten, som standard 11211.
Kör skriptet från kommandoraden.
cd <web server docroot>
php cache-test.php
Det första resultatet är got result from mysql. Det innebär att nyckeln inte fanns i ett cache-minne, men den hämtades från MySQL.
Det andra resultatet är got result from memcached, vilket verifierar att värdet har sparats i cache-minnet.
Slutligen kan du visa minnesknapparna med Telnet:
telnet localhost <memcache port>
Vid uppmaningen skriver du
stats items
Resultatet liknar följande:
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
Töm memcache-lagringen och avsluta Telnet:
flush_all
quit
Ytterligare information om Telnet-testet