CentOSでのmemcachedの設定
この節では、CentOSにmemcachedをインストールする手順を説明します。 詳細については、memcached wikiを参照してください。
PHPはmemcacheをネイティブにサポートしていないので、PHPで使用するには拡張機能をインストールする必要があります。 利用可能なPHP拡張機能は2つあり、どの拡張機能を使用するかをデコードすることが重要です。
CentOSでのmemcachedのインストールと設定
CentOSにmemcachedをインストールするには、root権限を持つユーザーとして次のタスクを実行します。
-
memcachedとその依存関係をインストールします。
code language-shell yum -y updatecode language-shell yum install -y libevent libevent-develcode language-shell yum install -y memcachedcode language-shell yum install -y php-pecl-memcachenote 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-shell service memcached restart -
Web サーバーを再起動します。
Apacheの場合
code language-shell 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