Функция "apc_store" сбрасывает значения TTL при замене ключа кеша, который уже существует? - PullRequest
2 голосов
/ 30 июня 2010

В настоящее время я использую функцию APC "apc_store" в качестве средства для замены элементов в кеше, который уже существует, но я не уверен, будет ли TTL сброшен или нет.Я бы хотел, чтобы он не сбрасывал значения TTL.

1 Ответ

1 голос
/ 30 июня 2010

TTL, указанный вами в apc_store, определенно перезапишет TTL существующего элемента. Если вы не предоставите TTL, срок действия товара не истечет.

TTL относительный, количество секунд с этого момента. Если вам нужно фиксированное значение, просто используйте одно и то же значение при каждом вызове apc_store.

Если вы хотите, чтобы срок действия элемента истек в абсолютное время, вам нужно хранить время с вашим объектом и каждый раз вычислять TTL. Например,

$obj = apc_fetch($key);

if (!$obj) {
    $obj = new MyObject();
    $obj->expiry = time() + 24*60*60; // Expires 24 hours later
}

$ttl = $obj->expiry - time();

if ($ttl <= 0) {
   // Item expired
} else {
   apc_store($key, $obj, $ttl);
}
...