Configurare memcached su CentOS
Questa sezione fornisce istruzioni per installare memcached su CentOS. Per ulteriori informazioni, consultare 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
(d non disponibile) - un'estensione precedente ma popolare che non viene mantenuta regolarmente.
Ilmemcache
estensione attualmente non lavorare con PHP 7. Consulta 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 Documentazione PHP per memcached.Il nome esatto è
php-pecl-memcached
per CentOS.
Installare e configurare memcached su CentOS
Per installare memcached su CentOS, esegui le seguenti attività come utente con root
privilegi:
-
Installare memcached e le relative dipendenze:
code language-bash yum -y update
code language-bash yum install -y libevent libevent-devel
code language-bash yum install -y memcached
code language-bash yum install -y php-pecl-memcache
note info INFO La sintassi dei comandi precedenti potrebbe dipendere dagli archivi di pacchetti utilizzati. Ad esempio, se si utilizza webtatic e PHP 5.6, immettere: yum 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. -
Individua il valore per
CACHESIZE
e modificarlo in almeno 1 GB. Ad esempio:code language-config CACHESIZE="1GB"
-
Individua il valore per
OPTIONS
e cambiarlo inlocalhost
o127.0.0.1
-
-
Salva le modifiche apportate a
memcached
ed esci dall’editor di testo. -
Riavvia memcached.
code language-bash service memcached restart
-
Riavvia il server web.
Per Apache:
code language-bash service httpd restart
-
Procedi alla sezione successiva.
Verifica del funzionamento di memcached prima di installare Commerce
L’Adobe consiglia di testare memcached per verificare 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
phpinfo.php
file nella directory principale dei documenti del server web:code language-php <?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 visualizzato, verificare di aver installato php-pecl-memcache
estensione.
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 set
comando.
Ulteriori dettagli su questo test
Creare il database MySQL:
mysql -u root -p
Alla mysql
immettete i seguenti comandi:
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. Il <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 memorizzato 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
Informazioni aggiuntive sul test Telnet