2013-06-15 4 views
0

"memcached"를 사용하여 PHP 세션을 저장합니다. 요청이 동 기적으로 (트랜잭션 또는 작업이 중복되지 않도록) 필수적이지만 "memcached"세션을 사용하는 동안 "세션 잠금"이 작동하지 않는 것이 중요합니다.PHP Memcached 세션 잠금 활성화

은 하나의 요청이 실행될 때까지 "memcached"세션을 잠그는 몇 가지 방법입니까?

+0

자세한 정보를 제공해 주시겠습니까? 내가 생각하는 너의 질문을 이해하지 못한다. – Sliq

답변

0

$(field_name)_is_locked = true을 시작한 다음 시작했을 때 $(field_name)_is_locked = false을 완료하고 변수를 업데이트 할 때 서버에 전달할 수 있습니다.

1

아무 것도 내장되어 있지 않지만 코드를 원자 단위로 만들 수 있습니다. 코드에서

$key = 'lockable_key_name'; 
$lockkey = $key.'##LOCK'; 

if($memcached->add($lockkey, '', 60)) { 
    $storedvalue = $memcached->get($key); 

    // do something with $storedvalue 
    $memcached->set($key, $newvalue); 

    // release 
    $memcached->delete($lockkey); 
} 

당신은 수행하여 잠금을 확인할 수 있습니다 :

if(!$memcached->get($lockkey)) { 
    // then do something 
} 

를 get 메소드가 false 다음에는 잠금 장치가 없습니다 반환하거나 조작이 걸려와에 지정된 60 초 시간 제한을 경과 한 경우 위의 add 호출.

1

당신이 신뢰할 수/공식 소스를 요구 되었기 때문에 : http://pecl.php.net/package-info.php?package=memcache&version=3.0.4

당신이 일어날 경우

memcached를 확장은 PECL 확장 페이지에서 변경 로그 문서에 따라, 버전 3.0.4 이후 세션 잠금을 지원 이전 버전을 실행하십시오 (memcached 확장 버전이 4 년 이상 된 것을 의미합니다), 운이 없으므로 업그레이드해야합니다.

+0

세션 핸들러가 php.ini에 설정되어 있습니다 : 'session.save_handler = memcache session.save_path = "tcp : //192.168.*.* : *"' PHP는 php_memcache.dll (Win Server 2008, PHP 5.3)을 사용합니다. PECL로 전환하는 것이 좋습니다. 덕분에 . – user492589

관련 문제