2010-05-26 4 views
8

memcached를 보완하기 위해 각 웹 서버에 특정 데이터를 저장하기 위해 APC를 시도하기 시작했습니다.PHP : apc_store가 의도 한대로 작동하지 않습니다.

그러나 다음 코드 조각이 나에게주고 두통 :

echo apc_store('key', 'value'); 
echo apc_store('key', 'newvalue'); 
echo apc_fetch('key'); 

// Echoes: value 

Memcached가 예 :

$memcached = new Memcached; 

$memcached->addServer('localhost', '11211'); 

$memcached->set('key', 'value1'); 
echo $memcached->get('key') . '<br />'; // Echoes value1 

$memcached->set('key', 'value2'); 
echo $memcached->get('key'). '<br />'; // Echoes value2 

$memcached->set('key', 'value3'); 
echo $memcached->get('key'). '<br />'; // Echoes value3 

왜 apc_store로 제대로 작동하지 ?

편집 : 은 다른 사람이 여기에 하나, 버그로 인해 발생하는 경우, 솔루션을 찾고에 두 시간 소비하지되어 있는지 확인하려면 : (하지만,하지 가장 효과적인) http://pecl.php.net/bugs/bug.php?id=16894&edit=1

답변

7

이것은 알려진 문제로 보입니다. PECL Bug #16814 New warning "Potential cache slam averted for key"

요청 당 하나만 허용됩니다. 나는이 테스트 노력이와

<?php 

echo "<p>apc_fetch(key): " . apc_fetch('key') . "</p>\n"; 
// echo "<p>apc_store(value): " . apc_store('key', 'value') . "</p>\n"; 
echo "<p>apc_store(newvalue): " . apc_store('key', 'newvalue') . "</p>\n"; 
echo "<p>apc_fetch(key): " . apc_fetch('key') . "</p>\n"; 

재생을 해제 주석 번째 줄을하고 이전 요청에 키 세트를 덮어 않는 것을 볼 수 있지만, 당신은 단지 요청에 따라 한 번 지정된 키를 저장할 수 있습니다.

Off으로 설정하면이 단일 쓰기 동작을 사용 중지 할 수있는 ini 파일 설정 apc.slam_defense이 버그 로그에 기록됩니다. 그러나 나는 그것을 간략하게 시도했고 나는 이것이 작동 하는지를 확인할 수 없었다. 아마 당신은 php.ini를 변경할 때 아파치를 다시 시작하는 것이 더 운이 좋을 것이다.

+0

이렇게 이상하게 보일 수도 있습니다. 도와 줘서 고마워, 빌! – Industrial

+0

그건 그렇고, 내가 전에 여기에 관해서 당신에게 물어 봤던 mySQL 나무에 조금 느슨해 왔습니다. 당신은 Github에서 몇 가지 나무 예제를 사용할 수 있다고 말하고있었습니다. 거기에 뭐가 새 거니? – Industrial

+0

동일한 상황에 처한 사람이나 다른 사람을 도울 수있는 솔루션에 대한 링크가있는 내 게시물을 업데이트했습니다. APC – Industrial

관련 문제