Configurare memcached su CentOS
- Argomenti:
- Configurazione
- Cache
Creato per:
- Esperto
- Amministratore
- Sviluppatore
Questa sezione fornisce istruzioni per installare memcached su CentOS. Per ulteriori informazioni, consultare il wiki memcached.
Poiché PHP non dispone di supporto nativo per memcache, è necessario installare un'estensione affinché PHP possa utilizzarla. Sono disponibili due estensioni PHP ed è importante decodificare quali utilizzare:
-
memcache
(no d), un'estensione precedente ma popolare che non viene mantenuta regolarmente.
L'estensionememcache
attualmente non funziona con PHP 7. Consulta la documentazione PHP per memcache.Il nome esatto è
php-pecl-memcache
per CentOS. -
memcached
(con und
)—un'estensione più recente e mantenuta compatibile con PHP 7. Consulta la documentazione PHP per memcached.Il nome esatto è
php-pecl-memcached
per CentOS.
Installare e configurare memcached su CentOS
Per installare memcached su CentOS, eseguire le attività seguenti come utente con privilegi root
:
-
Installare memcached e le relative dipendenze:
yum -y update
yum install -y libevent libevent-devel
yum install -y memcached
yum install -y php-pecl-memcache
INFO
La sintassi dei comandi precedenti potrebbe dipendere dagli archivi di pacchetti utilizzati. Ad esempio, se si utilizza webtatic e PHP 5.6, immettereyum install -y php56w-pecl-memcache
. Utilizzareyum search memcache|grep php
per trovare il nome del pacchetto appropriato. -
Modificare l'impostazione di configurazione memcached per
CACHESIZE
eOPTIONS
:-
Apri
/etc/sysconfig/memcached
in un editor di testo. -
Individuare il valore per
CACHESIZE
e modificarlo in almeno 1 GB. Ad esempio:CACHESIZE="1GB"
-
Individuare il valore per
OPTIONS
e modificarlo inlocalhost
o127.0.0.1
-
-
Salvare le modifiche apportate a
memcached
e uscire dall'editor di testo. -
Riavvia memcached.
service memcached restart
-
Riavvia il server web.
Per Apache:
service httpd restart
-
Procedi alla sezione successiva.
Verifica del funzionamento di memcached prima di installare Commerce
L’Adobe consiglia di testare memcached per assicurarsi che funzioni prima di installare Commerce. Questa operazione richiede solo pochi minuti e può semplificare la risoluzione dei problemi in un secondo momento.
Verificare che memcached sia riconosciuto dal server web
Per verificare che memcached sia riconosciuto dal server web:
-
Creare un file
phpinfo.php
nella directory principale dei documenti del server Web:<?php // Show all information, defaults to INFO_ALL phpinfo();
-
Vai a quella pagina nel browser web.
Ad esempio:
http://192.0.2.1/phpinfo.php
-
Accertati che memcache venga visualizzato come segue:
Verifica di utilizzare memcached versione 3.0.5 o successiva.
Se memcache non viene visualizzata, riavviare il server Web e aggiornare la pagina del browser. Se ancora non viene visualizzata, verificare di aver installato l'estensione php-pecl-memcache
.
Creare un test memcache costituito da un database MySQL e da uno script PHP
Il test utilizza un database, una tabella e dati MySQL per verificare che sia possibile recuperare i dati del database e memorizzarli in memcache. Uno script PHP esegue prima la ricerca nella cache. Se il risultato non esiste, lo script esegue una query sul database. Dopo che la query è stata soddisfatta dal database originale, lo script memorizza il risultato in memcache, utilizzando il comando set
.
Ulteriori dettagli su questo test
Creare il database MySQL:
mysql -u root -p
Al prompt mysql
, immettere i comandi seguenti:
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
Crea cache-test.php
nella directory principale dei documenti del server Web:
$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;
Dove <memcached hostname or ip>
è localhost
, 127.0.0.1
o il nome host o l'indirizzo IP memcache. <memcached port>
è la porta di ascolto; per impostazione predefinita, 11211
.
Esegui lo script dalla riga di comando.
cd <web server docroot>
php cache-test.php
Il primo risultato è got result from mysql
. Ciò significa che la chiave non esiste in memcached ma è stata recuperata da MySQL.
Il secondo risultato è got result from memcached
, che verifica che il valore sia archiviato correttamente in memcached.
Infine, puoi visualizzare le chiavi memcache utilizzando Telnet:
telnet localhost <memcache port>
Al prompt, immetti
stats items
Il risultato è simile al seguente:
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
Scaricare la memoria cache e uscire da Telnet:
flush_all
quit