2011-02-05 3 views
2

세션 저장에 사용할 수있는 캐싱 시스템이 있다고 가정 해보십시오.세션 저장을 위해 캐시 시스템 사용?

// example i have a cache class 
$memcached->add('key','value'); 
// then i can get the session from 
$memcached->get('key'); 

PHP의 기본 제공 세션을 사용하고 있습니까?

답변

3

session.save_handlermm으로 설정하여 Apache의 런타임 메모리에 PHP 저장 세션 데이터가 있어야합니다. 그러나 이렇게하려면 메모리 관리 모듈 (--with-mm)을 사용하여 PHP를 컴파일해야하는데, Windows에서는 사용할 수 없다고 생각합니다.

memcached 또는 다른 캐싱 메커니즘을 사용하려는 경우 session_set_save_handler을 사용하여 사용자 정의 저장 장치 처리기를 구현하는 것이 가장 좋으므로 세션 관리 코드를 다시 작성할 필요가 없습니다.

이렇게하면 세션 데이터를 저장하는 데 명백한 단점이 있다고 생각하지 않습니다. 분명한 장점은 속도입니다.

편집 : 내가 속도를 제외하고, 설명 this page 건너 온, 주요 장점/즉, 저장 세션 memcached를 사용의 단점 :

  • 그것은 사용하지 않고 여러 웹 서버에서 세션을 쉽게 공유 할 수 끈적 세션.
  • 그러나 memcached는 만료일까지 데이터를 보존하겠다는 약속을하지 않습니다. — 만료 후 만 이 아닌 데이터를 사용할 수 있습니다. 따라서 memcached가 램 (ram)이 낮거나 최근에 사용되지 않았거나 서버가 전혀 다운되면 세션 데이터가 손실됩니다.
+0

그래서 우리가 캐시를 사용할 필요가 왜 우리가 세션을 사용할 수 있는지? –

+0

오, 알 겠어, 그 사이의 선택 공유 또는 어? –

+0

@Adam : 필자는 개인적으로 세션 저장을 위해 memcached를 사용하지 않았지만, 최소한의 구성으로 여러 웹 서버에서 세션 데이터를 공유 할 수있는 경우 가끔 세션이 손실되는 것을 용인 할 수 있다면 그것을 사용하는 것이 좋습니다. Redis와 같은 시스템에는 다른 이점이있을 수 있습니다. 도움을 주신 덕분에 –

4

먼저 명확하게 설명하고 싶습니다. PHP 세션 저장소를 사용하는 경우 세션은 파일 (일반적으로/tmp)에 저장됩니다. 각 세션은 자신의 파일이됩니다.

memcached 또는 redis를 사용하여 세션을 저장하면 PHP 코드의 내용이 변경되지 않습니다.

대신 php.ini에 세션 저장 핸들러를 통해 구성된 세션을 저장하기 위해 redis 또는 memcache를 사용하도록 PHP를 구성 할 수 있습니다.

장점 :

  • 세션 저장/검색이 훨씬 빨라집니다

단점 : 당신이 php.ini 파일을 구성 (또는 자신을 핸들러 저장 세션을 구현) 할 필요가

지금은 memcache 대신 redis를 사용하는 것이 좋습니다. 세션이 영구적으로 유지되므로 서버를 다시 부팅해야하는 경우 모든 사용자가 로그 아웃되지 않습니다.레디 스에 대한

: https://github.com/owlient/phpredis합니다 ("세션 핸들러"페이지 하단)

관련 문제