2014-06-11 3 views
0

실행 시간이 TTL보다 클 때 key_1이 지워지지 않는 이유는 무엇입니까?데이터가 지워지지 않음 apc_add() TTL 매개 변수

$ttl = 3; 

$key = 'key_1'; 

if (apc_exists($key)) { 
    echo "Data exists!\n"; 
    if (apc_delete($key)) 
     echo "Data deleted.\n"; 
    else 
     die("Unable to delete data\n"); 
} else { 
    echo "Data not present.\n"; 
} 

apc_add($key, 'some-value', $ttl); 

$start = microtime(true); 

echo "TTL: ".$ttl."sec\n"; 

while (1) { 
    sleep(1); 
    $exec_time = round(microtime(true) - $start, 1); 
    $data = apc_fetch($key); 
    if (!empty($data)) { 
     echo 'key_1: ['.$data.']: ' 
      .$exec_time."sec" 
      .(($exec_time > $ttl) ? "\t<<< Data still exists!\n" : "\n"); 
    } else { 
     die("Data was cleared!\n"); 
    } 

} 
+0

'apc_add'의 응답을 var_dump 할 수 있습니까? 'key_1 '이 이미 긴 TTL로 존재할 수 있습니까? – Scopey

+0

데이터가 이미 존재하고 거기에 없었는지 확인하기 위해 스크립트를 편집했습니다 ... –

답변

0

좀 더 읽고 the docs을 읽고 답변을 찾았습니다. TTL 매개 변수 섹션 아래 :

TTL (Time To Live); ttl 초 동안 var에 캐시를 저장하십시오. ttl이 지나면 저장된 변수는 다음 요청시 캐시에서 삭제됩니다. ttl이 제공되지 않는 경우 (또는 ttl이 0 인 경우) 값은 캐시에서 수동으로 제거되거나 캐시에 존재하지 않을 때까지 유지됩니다 (지우기, 다시 시작 등).

핵심 부품은 첫 번째 세트의 브래킷입니다. (다음 요청시)

+0

글쎄, 요청이 없습니다. 태그 참조 :) –

+0

내가 이해하는 것과 비슷한 종류의 거래. 스크립트를 실행하여 값을 저장 한 다음 3 초 후에 별도의 CLI 호출을 사용하여 값을 수동으로 가져 오십시오. – Scopey

+0

이미 시도했습니다 - 데이터가 프로세스간에 공유되지는 않지만 –