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 = filessession.save-handler
そしてそれをこれに変更します:
[Session] ; Handler used to store/retrieve data. ; http://www.php.net/manual/en/session.configuration.php#ini. session.save_handler = memcached session.save_path = "127.0.0.1:11211"session.save-handler
ご覧のとおり、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を参照することをお勧めします。