PHP が次の方法でセッションを保存するために memcache を呼び出すときは、
/usr/local/php/etc/php.ini の session.auto_start = 0 を 0 に設定することを忘れないでください。そうしないと、memcache を呼び出してセッションを保存することはできません。の効力を生じます。
その理由は、php が最初の行を実行すると、セッションが自動的に開始され、デフォルトはファイルであるため、セッションはデフォルトでファイルを介して保存され、後で設定された ini_set は役に立たなくなるためです。
//セッション設定
方法1:
この方法は本番環境で使用されており、問題ありません。
PHPコードファイルの行の先頭に初期化コマンドを追加します。
ini_set("session.save_handler", "memcache");
#複数の memcache アドレスを設定する必要がある場合は、カンマで区切ってください。
#ini_set("session.save_path", "tcp://127.0.0.1:11211,tcp://127.0.0.1:11212");
ini_set("session.save_path", "tcp://127.0 .0.1:11211");
session_start();
方法 2:
このメソッドは、memcache ノードを書き込みます。実稼働環境で使用されています。2 つの memcache 構成の IP アドレスは検証されていません。
直接設定 /usr/local/php/etc/php.ini
session.save_handler = memcache
session.save_path = "tcp://127.0.0.1:11211"
set_session.php
# ############################################## ## ######
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://10.12.4.25:11211, tcp: //10.12.4.25:11212");
session_start();
$_SESSION['TEST3'] = time();
print $_SESSION['TEST3'];
print session_id();
?>
ブラウザ経由で set_session.php にアクセスした後、telnet 10.12.4.25 11211 でセッション値が実際に存在するかどうかを確認できます。セッション値はいずれかの memcache ノードにのみ保存されていることが証明されています
get rtv10q183u28kmmtfpi0bd5nq6
# ############################################## ## #######
複数の memcache ノードを構成した後、ストレージが複数の memcache ノードに分散されるかどうかを実験します
################### # #### ########################################### ####### #
1. Memcache マルチノード構成に値を割り当てると、それらが複数のノードに分散して保存されていることがわかります
$memcache = new Memcache;
$memcache -> ;addServer('10.12.4.25', 11211);
$memcache->addServer('10.12.4.25', 11212);
$memcache->addServer('10.12.4.25', 11213);
for ($ i = 0; $i < 20; $i++)
{
$memcache->set($i, $i."hehe", 0, 1000);
}
for ($i = 0; $i < 20; $i++)
{
$val = $memcache->get("$i");
echo "$i key1 値を取得します。"
}
?>
get_memcache.php を通して、データが実際に複数のノードに分散していることがわかります。
echo '10.12.4.25 11211
';
$memcache = 新しい Memcache;
$memcache->addServer('10.12.4.25', 11211);
#$memcache->addServer ('10.12.4.25', 11213);
for ($i = 0; $i {
$val = $memcache->get("$i");
echo "$i key1 値を取得: " . $val ."
n";
}
echo '10.12.4.25 11212
';
$memcache = 新しい Memcache;
$memcache->addServer ('10.12.4.25', 11212);
for ($i = 0; $i {
$val = $memcache->get("$i");
echo "Get $i key1 値: " . $val ."
n";
}
echo '10.12.4.25 11213
';
$memcache = new Memcache;
$memcache->addServer('10.12. 4.25', 11213);
for ($i = 0; $i {
$val = $memcache->get("$i");
using using : " . $val ."
n";
}
?>
は、clean_memcache.php を通じて memcache の値をクリアし、すべてクリアしてから、再割り当てして問題があるかどうかを確認するために使用されます。ストレージが実際に分散していることがわかりました。
clean_memcache.php
$memcache = 新しい Memcache;
$memcache->connect('10.12.4.25', 11211);
$memcache->addServer('10.12.4.25', 11212 );
$memcache->addServer('10.12.4.25', 11213);
#$memcache->addServer('10.12.4.25', 11214);
$memcache->flush();
?> ;
次の方法で php が memcache を呼び出してセッションを保存するときは、
/usr/local/php/etc/php.ini で session.auto_start = 0 を 0 に設定することを忘れないでください。それ以外の場合は、memcache を呼び出して保存します。セッションは無効です。
//セッション設定
ini_set("session.save_handler", "memcache");
#ini_set("session.save_path", "tcp://127.0.0.1:11211,tcp://127.0.0.1:11212");
ini_set("session.save_path", "tcp://127.0. 0.1:11211");
session_start();
上記では、PHP が memcache を呼び出してセッションを保存する方法を内容も含めて紹介しています。PHP チュートリアルに興味のある友人の参考になれば幸いです。