memcache に転送して PHP セッションを保存し、複数サーバーのセッション問題を解決します
?
?
PECL :: Package :: memcache 2.1.1 バージョンの変更ログに次のエントリがあります:
- 実験的なセッション ストレージのサポートを追加しました。memcached をセッション ストレージとして使用できます。
つまり、memcache を PHP の session.save_handler として直接使用できます。
1. memcached をインストールするには、同じ ./configure; make install を使用します。そのため、最初に libevent をインストールする必要があります。
2. pecl::memcache をインストールします。pecl コマンド ライン ツールを使用してインストールします。
pecl install memcache
またはソースから直接インストールします:
phpize
./configure
作る
メイクインストール
php.ini で extension=memcache.so を開き、Apache を再起動し、phpinfo で登録された保存ハンドラーを確認します。ユーザー memcache が 3 つのファイルを使用できます。
3. 構成ファイルを修正し、php.ini でグローバルに設定します。
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211
またはディレクトリ内の .htaccess:
php_value session.save_handler memcache
php_value session.save_path tcp://127.0.0.1:11211
または特定のアプリケーション:
ini_set(session.save_handler, memcache);
ini_set(session.save_path, tcp://127.0.0.1:11211);?
複数の memcached サーバーを区切るにはカンマを使用します。Memcache::addServer() ドキュメントに記載されているように、追加のパラメータとして、persistent、weight、timeout、retry_interval などを取得できます。次のようなものです。 tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2。
4. memcached を開始します:
memcached -d -l 127.0.0.1 -p 11212 -m 128
5. プログラム内のセッション ストレージに memcache を使用します。例を使用してテストします。
___FCKpd___6
6. sessionid を使用して memcached をチェックインします:
$memcache = memcache_connect(localhost, 11211);
var_dump($memcache->get(19216821213c65cedec65b0883238c278eeb573e077));
セッション[テスト 3] = time();
print
print session_id();
?>
見られます
string(37) TEST|i:1177556731;TEST3|i:1177556881;
このような出力は、セッションが正常に動作していることを証明します。
memcache を使用してセッションを保存すると、ファイルよりも読み取りと書き込みがはるかに高速になり、複数のサーバーがセッションを共有する必要がある場合に、同じ memcached サーバーのグループを使用するように構成すると便利です。以上で、余分な作業負荷が軽減されます。セッション データがメモリに保存されるため永続性に欠けるという欠点がありますが、セッション データにとっては大きな問題ではありません。