CentOS での memcached の設定
この節では、CentOS に memcached をインストールする手順を示します。 詳細については、memcached wiki を参照してください。
PHP は memcache をネイティブでサポートしていないので、それを使用するには PHP 用の拡張モジュールをインストールする必要があります。 PHP には 2 つの拡張モジュールがあり、どちらを使用するかをデコードすることが重要です。
-
memcache
(no d) – 定期的にメンテナンスされていない、古いが一般的な拡張機能。memcache
拡張モジュールは現在 PHP 7 で動作します 動作しません。 memcache に関する PHP のドキュメントを参照してください。CentOS の正確な名前は
php-pecl-memcache
です。 -
memcached
(とd
) – PHP 7 と互換性のある、新しくメンテナンスされた拡張機能です。 memcached に関する PHP のドキュメントを参照してください。CentOS の正確な名前は
php-pecl-memcached
です。
CentOS での memcached のインストールと設定
CentOS に memcached をインストールするには、root
権限を持つユーザーとして次のタスクを実行します。
-
memcached とその依存関係をインストールします。
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 上記のコマンドの構文は、使用するパッケージリポジトリによって異なる場合があります。 例えば、webtatic と PHP 5.6 を使用する場合、 yum install -y php56w-pecl-memcache
と入力します。yum search memcache|grep php
を使用して、適切なパッケージ名を見つけます。 -
CACHESIZE
およびOPTIONS
の memcached 設定を変更します。-
/etc/sysconfig/memcached
をテキストエディターで開きます。 -
CACHESIZE
の値を見つけて、1 GB 以上に変更します。 例:code language-config CACHESIZE="1GB"
-
OPTIONS
の値を見つけて、localhost
または127.0.0.1
に変更します
-
-
memcached
への変更を保存し、テキストエディターを終了します。 -
memcached を再起動します。
code language-bash service memcached restart
-
Web サーバーを再起動します。
Apache の場合
code language-bash service httpd restart
-
次の節に進みます。
Commerceをインストールする前に、memcached が機能することを確認
Adobeでは、Commerceをインストールする前に、memcached をテストして機能することを確認することをお勧めします。 この操作には数分しかかかりません。また、後でトラブルシューティングを簡略化することもできます。
memcached が Web サーバで認識されることを確認します。
memcached が Web サーバで認識されることを確認するには、次の手順に従います。
-
Web サーバーの docroot に
phpinfo.php
ファイルを作成します。code language-php <?php // Show all information, defaults to INFO_ALL phpinfo();
-
Web ブラウザーでそのページに移動します。
例:
http://192.0.2.1/phpinfo.php
-
memcache が次のように表示されていることを確認します。
memcached バージョン 3.0.5 以降を使用していることを確認します。
memcache が表示されない場合は、web サーバーを再起動してブラウザーページを更新します。 それでも表示されない場合は、php-pecl-memcache
拡張機能をインストールしたことを確認します。
MySQL データベースと PHP スクリプトで構成される memcache テストを作成します。
このテストでは、MySQL データベース、テーブル、およびデータを使用して、データベースデータを取得して memcache に保存できることを確認します。 PHP スクリプトはまずキャッシュを検索します。 結果が存在しない場合、スクリプトはデータベースにクエリを実行します。 クエリが元のデータベースで実行された後、スクリプトは set
コマンドを使用して結果を memcache に保存します。
MySQL データベースを作成します。
mysql -u root -p
mysql
プロンプトで、次のコマンドを入力します。
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
Web サーバーの docroot に cache-test.php
を作成します。
$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;
ここで、<memcached hostname or ip>
は localhost
、127.0.0.1
、memcache ホスト名または IP アドレスのいずれかです。 <memcached port>
はリッスンポートです(デフォルトは 11211
)。
コマンドラインからスクリプトを実行します。
cd <web server docroot>
php cache-test.php
最初の結果は got result from mysql
です。 つまり、キーは memcached には存在しませんが、MySQL から取得されたものです。
2 つ目の結果は got result from memcached
で、値が memcached に正常に格納されていることを確認します。
最後に、Telnet を使用して memcache キーを確認できます。
telnet localhost <memcache port>
プロンプトに対して、と入力します。
stats items
結果は次のようになります。
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
memcache ストレージをフラッシュし、Telnet を終了します。
flush_all
quit