memcacheでsessionを記憶する

4007 ワード

回転:http://weixiang096.blog.163.com/blog/static/12747355520119289744424/
PECL::Package:memcache 2.1.1バージョンのChangelogの中に一つがあります。
-Added experimental session storge.You can use memcached as session storge.
つまり直接にmemcacheでPHPのsession.save_を作ることができます。ハンドルです
1.据え付け  memcached、それともあのセットですか?メークmake installは、memcachedがlibeventでイベント駆動をするように注意しますので、まずlibeventをインストールします。
2.据え付け  pecl:memcache、peclコマンドラインツールでインストールする:
pecl install memcache
または直接ソースからインストールします。
phpize
./configure
make
make install
php.iniの中でextension=memcache.soを開いて、apacheを再起動して、phpinfoの中の「Registered save handles」を見ると、「files user memcache」の3つが使えます。
3.プロファイルを変更し、php.iniでグローバル設定:
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
または目次の下にあるhttaccess:
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 serverを使用する場合は、コンマで区切られます。  Memcache:addServer() ドキュメントで説明したように、追加のパラメータ「persistent」、「weight」、「timeout」、「retryGauinterval」などを持つことができます。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を使ってsessionを保存し、例を使ってテストしてください。
<?php
session_start();
if (!isset($_SESSION['TEST'])) {
$_SESSION['TEST'] = time();
}

$_SESSION['TEST3'] = time();

print $_SESSION['TEST'];
print "<br><br>";
print $_SESSION['TEST3'];
print "<br><br>";
print session_id();
?>
6.sessionidでmemcachedで調べてみます。
<?php
$memcache = memcache_connect('localhost', 11211);
var_dump($memcache->get('19216821213c65cedec65b0883238c278eeb573e077'));
?>
見えます
string(37) "TEST|i:1177556731;TEST3|i:1177556881;"
このような出力は、セッションが正常に動作していることを証明します。
memcacheでsessionを記憶するのは、読み書き速度がfilesよりも速いし、複数のサーバーがsessionを共有する必要がある時に便利です。これらのサーバーを同じグループのmemcachedサーバを使うように配置すればいいです。余分な作業量を減らします。欠点はsessionデータがすべてmemoryに保存されていて、耐久性には欠けていますが、sessionデータにとっても大きな問題ではありません。
また、WS Memcached Session Handler for PHP サービスを提供します。set保存しますhandlerはmemcachedを利用する方法です。