[PaaS のみ]{class="badge informative" title="Adobe Commerce on Cloud プロジェクト(Adobeが管理する PaaS インフラストラクチャ)およびオンプレミスプロジェクトにのみ適用されます。"}

CentOSでのmemcachedの設定

この節では、CentOSにmemcachedをインストールする手順を説明します。 詳細については、memcached wikiを参照してください。

INFO
Adobeでは、最新の安定したmemcached バージョン(現在はmemcached用に3.1.3)を使用することをお勧めします。

PHPはmemcacheをネイティブにサポートしていないので、PHPで使用するには拡張機能をインストールする必要があります。 利用可能なPHP拡張機能は2つあり、どの拡張機能を使用するかをデコードすることが重要です。

  • memcacheno d) – 古いが人気のある拡張機能で、定期的にメンテナンスされません。
    現在memcache拡張機能​はPHP 7で動作しません。 memcache🔗については、PHP ドキュメントを参照してください。

    CentOSの正確な名前はphp-pecl-memcacheです。

  • memcachedd) - PHP 7と互換性のある、新しく保守された拡張機能。 memcached🔗については、PHP ドキュメントを参照してください。

    CentOSの正確な名前はphp-pecl-memcachedです。

CentOSでのmemcachedのインストールと設定

CentOSにmemcachedをインストールするには、root権限を持つユーザーとして次のタスクを実行します。

  1. memcachedとその依存関係をインストールします。

    code language-shell
    yum -y update
    
    code language-shell
    yum install -y libevent libevent-devel
    
    code language-shell
    yum install -y memcached
    
    code language-shell
    yum install -y php-pecl-memcache
    
    note info
    INFO
    上記のコマンドの構文は、使用するパッケージリポジトリによって異なる場合があります。 例えば、webtaticとPHP 5.6を使用する場合は、yum install -y php56w-pecl-memcacheと入力します。 yum search memcache|grep phpを使用して、適切なパッケージ名を見つけます。
  2. CACHESIZEOPTIONSのmemcached設定設定を変更します。

    1. /etc/sysconfig/memcachedをテキストエディターで開きます。

    2. CACHESIZEの値を探し、1 GB以上に変更します。 例:

      code language-config
      CACHESIZE="1GB"
      
    3. OPTIONSの値を見つけて、localhostまたは127.0.0.1に変更します

  3. 変更をmemcachedに保存して、テキストエディターを終了します。

  4. memcachedを再起動します。

    code language-shell
    service memcached restart
    
  5. Web サーバーを再起動します。

    Apacheの場合

    code language-shell
    service httpd restart
    
  6. 次のセクションに進みます。

Commerceをインストールする前に、memcachedが機能することを確認する

Adobeでは、Commerceをインストールする前にmemcachedをテストして、動作することを確認することをお勧めします。 これには数分しかかかりませんし、後でトラブルシューティングを簡素化できます。

memcachedがweb サーバーで認識されていることを確認します

memcachedがweb サーバーで認識されていることを確認するには:

  1. Web サーバーのdocrootにphpinfo.php ファイルを作成します。

    code language-php
    <?php
    // Show all information, defaults to INFO_ALL
    phpinfo();
    
  2. web ブラウザーでそのページに移動します。

    例:http://192.0.2.1/phpinfo.php

  3. memcacheが次のように表示されることを確認します。

memcacheがweb サーバーによって認識されていることを確認する

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>localhost127.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

Telnet テストに関する追加情報

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c