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 노드를 작성합니다. 하지만 두 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();
$_SESSION['TEST3'];
인쇄 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 값 가져오기: " $val ."
n";
}
?>
get_memcache.php를 통해 데이터가 실제로 여러 노드에 분산되어 있음을 확인할 수 있습니다.
echo '10.12.4.25 11211
';
$memcache = new Memcache;
$memcache->addServer('10.12.4.25', 11211 );
#$memcache->addServer('10.12.4.25', 11213);
for ($i = 0; $i < 20; $i++)
{
$val = $memcache->get("$i");
echo "$i key1 값 가져오기: " . $val ."
n";
}
echo '10.12.4.25 11212
';
$memcache = new Memcache;
$memcache->addServer('10.12.4.25', 11212);
for ($i = 0; $i {
$val = $memcache->get("$i");
echo "$i key1 값 가져오기: " . $val ."
n";
}
echo '10.12.4.25 11213
';
$memcache = new Memcache;
$memcache->addServer(' 10.12.4.25', 11213);
for ($i = 0; $i < 20; $i++)
{
$val = $memcache->get("$i");
echo "$i key1 값 가져오기: " . $val ."
n";
}
?>
clean_memcache.php를 통한 정리에 사용됨 Memcache 값을 모두 지운 다음 다시 할당하고 문제가 있는지 확인하여 실제로 별도로 저장되어 있는지 확인합니다.
clean_memcache.php
$memcache = new 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(); 🎜>
/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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.