>  기사  >  백엔드 개발  >  PHP는 세션을 저장하기 위해 Memcache를 호출합니다.

PHP는 세션을 저장하기 위해 Memcache를 호출합니다.

WBOY
WBOY원래의
2016-08-08 09:24:07894검색

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 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.