2008. 5. 14. 09:26
array apc_cache_info  ([ string $cache_type  [, bool $limited  ]] )

인자값중 $cache_type 을 "user" 로 주면 apc_cache_info 를 사용해서 apc_store 나 apc_add 로 캐시한 내용들의 목록을 가져올 수 있다. 예제 코드와 그 출력된 결과는 다음과 같다.
<?php
$s = "example string";
apc_store('five', $s, 5);
apc_store('minute', $s, 60);
apc_store('noTTL', $s);
print_r(apc_cache_info('user'));
?>

more..

Array
(
[num_slots] => 2000
[ttl] => 0
[num_hits] => 0
[num_misses] => 0
[start_time] => 1196245414
[expunges] => 16
[mem_size] => 1644
[num_entries] => 3
[num_inserts] => 24
[file_upload_progress] => 1
[memory_type] => IPC shared
[locking_type] => file
[cache_list] => Array
(
[0] => Array
(
[info] => five
[ttl] => 5
[type] => user
[num_hits] => 0
[mtime] => 1196246312
[creation_time] => 1196246312
[deletion_time] => 0
[access_time] => 1196246312
[ref_count] => 0
[mem_size] => 546
)

[1] => Array
(
[info] => noTTL
[ttl] => 0
[type] => user
[num_hits] => 0
[mtime] => 1196246312
[creation_time] => 1196246312
[deletion_time] => 0
[access_time] => 1196246312
[ref_count] => 0
[mem_size] => 548
)

[2] => Array
(
[info] => minute
[ttl] => 60
[type] => user
[num_hits] => 0
[mtime] => 1196246312
[creation_time] => 1196246312
[deletion_time] => 0
[access_time] => 1196246312
[ref_count] => 0
[mem_size] => 550
)

)

[deleted_list] => Array
(
)

)


쉽게 리스트를 뽑아 올 수 있다. 하지만 문제가 있다. ttl을 설정할 시 ttl이 만료되어도 (즉 변수를 apc_fetch 를 통해 가져올 수 없는 경우에도) 리스트에 나타난다는 것이다. 성능상의 이유로 캐시리스트를 리플레시하지 않는 것 같다. 대신 apc_fetch 를 통해 해당 변수를 접근 한 후에는 리스트에서 사라진다. 실제적으론 ttl을 적용할려면 time() 으로 현재 시간을 얻어내서 배열의 mtime값과의 차가 ttl값을 넘기는지 확인하여야 한다. 목록에서 지우기 위해서는 해당 변수에 한번 접근을 하면 된다.(apc_fetch)
Posted by 아즈키