apc_store

(PECL)

apc_store --  Cache a variable in the data store

说明

bool apc_store ( string key, mixed var [, int ttl] )

注: Unlike many other mechanisms in PHP, variables stored using apc_store() will persist between requests (until the value is removed from the cache).

参数

key

Store the variable using this name. keys are cache-unique, so storing a second value with the same key will overwrite the original value.

var

The variable to store

ttl

Time To Live; store var in the cache for ttl seconds. After the ttl has passed, the stored variable will be expunged from the cache (on the next request). If no ttl is supplied (or if the ttl is 0), the value will persist until it is removed from the cache manually, or otherwise fails to exist in the cache (clear, restart, etc.).

返回值

如果成功则返回 TRUE,失败则返回 FALSE

范例

例子 1. A apc_store() example

<?php
$bar
= 'BAR';
apc_store('foo', $bar);
var_dump(apc_fetch('foo'));
?>

上例将输出:

string(3) "BAR"


add a note add a note User Contributed Notes
php at tequilasolutions dot com
03-Nov-2006 07:45
Seems to be no (easy) way at the to know how old a value fetched is and to check whether it is out of date.

I've made these wrappers so that you can fetch and store values based on a udt returned from get_last_modified_date() which should return a udt of when your data was last changed, and hence needs junking out of the cache.

function apc_fetch_udt($key){
   $g = apc_fetch($key);
   if ($g){
       list($udt,$val) = $g;
       if (get_last_modified_date()<$udt) {
           $val = unserialize($val);
           return $val;
       } else {
           apc_delete($key);
       }
   }
}
function apc_store_udt($key,$g){
   $udt = time();
   $g  = serialize($g);
   $apc = array($udt,$g);
   apc_store($key, $apc);
}
Sudhee
30-Oct-2006 08:09
It should be noted that apc_store appears to only store one level deep.  So if you have an array of arrays, and you store it.  When you pull it back out with apc_fetch it will only have the top level row of keys with nulls as the values of each key.
 
Solution to this, is to serialize the data before storing it in the cache and unserialize it while retrieving from the cache.
php at metalshard dot com
29-Oct-2006 01:48
It should be noted that apc_store appears to only store one level deep.  So if you have an array of arrays, and you store it.  When you pull it back out with apc_fetch it will only have the top level row of keys with nulls as the values of each key.