開発者ドキュメント

CentOSVPSのMemcachedにPHPセッションを保存する方法

Memcachedについて

Memcachedは、データベース呼び出し、API呼び出し、またはページレンダリングの結果からの任意のデータ(文字列、オブジェクト)の小さなチャンク用のメモリ内のKey-Valueストアです。

なぜMemcachedにセッションを保存するのですか?

Memcachedは、セッションをファイルではなくメモリに保存します。 メモリはファイルを読み取るよりもはるかに高速であるため、Webサイトのパフォーマンスが向上し、読み込み時間が短縮されます。

キャッチは何ですか?

セッションはメモリにのみ保存され、VPSがオフになっているとき、または再起動されたときにメモリはデータを保持できないため、シャットダウン時にセッションが削除されます。

設定

このチュートリアルを開始する前に、PHP 5がインストールされていることを確認してください。これを行う方法については、PHPヘルプセクションにチュートリアルがあります。

EPELリポジトリがインストールされていることを確認してください。Memcachedはベースリポジトリで使用できないため、Memcached用のEPELリポジトリが必要です。

rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

パッケージを利用可能な最新バージョンに更新する必要はありませんが、お勧めします。

yum update

Memcachedのインストール

Memcachedのインストールから始めましょう。

yum install memcached

Memcachedをインストールした後、VIでMemcachedの構成ファイルを開きます。

vi /etc/sysconfig/memcached

あなたはこれを見るでしょう:

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS=""

Memcachedはパスワードやユーザー名で保護されていないため、誰でもポート11211を介してアクセスできます。 これは望ましくないため、「OPTIONS =」セクションにいくつかのオプションを挿入して、VPSのみがアクセスできるようにします。

PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1"

キャッシュサイズを変更することをお勧めします。 デフォルトでは64MBです。 Memcachedがこの制限に達するとすぐに、古いエントリを削除して、新しいエントリ用にメモリを解放します。 あなたが非常に巨大なウェブサイトを持っていない限り、64MBで十分でしょう。

Memcachedを起動しましょう。

/etc/init.d/memcached start

Memcachedはデフォルトでは起動時に起動しません。起動時に起動するようにします。

chkconfig --levels 235 memcached on

MemcachedPHP拡張機能のインストール

いくつかのものをインストールする必要があります。開発ツールから始めましょう。 これらは、ソースコードからビルドするために必要です。

yum groupinstall "Development Tools"

その後、さらにいくつかインストールします。 最初の2つは拡張機能をビルドするために必要であり、最後の2つはPHPで拡張機能を実行/インストールするために必要です。

yum install zlib-devel libmemcached-devel php-pear php-pecl-memcached

次に、インストールしたばかりのPECL(PHP Extension Community Library)を使用してPHPMemcached拡張機能をインストールします。

pecl install -f memcached-1.0.0

PHP.iniをセッションハンドラーとしてMemcachedをセットアップするように変更する

最後に行うことは、セッションハンドラーとしてMemcachedを使用するようにPHPを構成することです。 これを行うには、VIで/etc/php.iniを開く必要があります。

vi /etc/php.ini

以下に表示されている「[セッション]」領域を検索します(下から上にスクロールする方が簡単です)。

[Session]
; Handler used to store/retrieve data.
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
session.save_handler = files

そしてそれをこれに変更します:

[Session]
; Handler used to store/retrieve data.
; http://www.php.net/manual/en/session.configuration.php#ini.session.save-handler
session.save_handler = memcached
session.save_path = "127.0.0.1:11211"

ご覧のとおり、session_handlerをmemcachedに変更し、Memcachedが動作するポート11211のローカルホストへのパスを変更しました。 次に、Apacheを再起動して、PHP.iniファイルをリロードします。

service httpd restart

すべてのセッションがファイルではなくMemcachedに保存されるようになりました。

次のエラーが表示される場合があります。

Starting httpd: httpd: apr_sockaddr_info_get() failed for memcached
httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName

これは、apache構成を編集することで解決できます。

vi /etc/httpd/conf/httpd.conf

ServerName行のコメントを解除します。

ServerName localhost

Memcachedの詳細

Memcachedは、すべてのページビューでリアルタイムである必要はなく、指定された時間増分で(つまり、)集中的なクエリを保存するのに理想的です。 10分ごと)。 スクリプト内でMemcachedを使用する方法の詳細については、thisチュートリアルのステップ3を参照することをお勧めします。

提出者:Tim Kotkamp
モバイルバージョンを終了