php[tek] 2018 : Call for Speakers

apc_add

(PECL apc >= 3.0.13)

apc_add 新規の変数をデータ領域にキャッシュする

説明

bool apc_add ( string $key , mixed $var [, int $ttl = 0 ] )
array apc_add ( array $values [, mixed $unused = NULL [, int $ttl = 0 ]] )

まだ保存されていない場合にのみ、変数をデータ領域にキャッシュします。

注意: PHP の他の多くの仕組みと異なり、apc_add() を用いて格納された変数はリクエストを超えて (その値がキャッシュから取り除かれるまで)持続します。

パラメータ

key

この名前を用いて変数を格納します。key は キャッシュ内で一意です。そのため、apc_add() を使用して同一の key で新しい値を格納しようとしても、それは保存されません。 かわりに FALSE が返されます (これが、apc_add()apc_store() の唯一の相違点です)。

var

格納する変数。

ttl

有効期間。var は、キャッシュに ttl 秒間だけ格納されます。 ttl が経過すると、格納されている変数は (次のリクエスト時に)キャッシュから削除されます。 ttl が指定されていない(あるいは ttl0 の場合)は、 キャッシュから手動で削除される・あるいはキャッシュに存在できなくなる (clear, restart など)まで値が持続します。

values

名前をキー、変数を値に指定します。

返り値

何かがキャッシュに正しく追加されたときに TRUE、それ以外の場合に FALSE を返します。 二番目の構文は、エラーになったキーを含む配列を返します。

例1 apc_add() の例

<?php
$bar 
'BAR';
apc_add('foo'$bar);
var_dump(apc_fetch('foo'));
echo 
"\n";
$bar 'NEVER GETS SET';
apc_add('foo'$bar);
var_dump(apc_fetch('foo'));
echo 
"\n";
?>

上の例の出力は以下となります。

string(3) "BAR"
string(3) "BAR"

参考

  • apc_store() - 変数をデータ領域にキャッシュする
  • apc_fetch() - 格納されている変数をキャッシュから取得する
  • apc_delete() - 格納されている変数をキャッシュから取り除く

add a note add a note

User Contributed Notes 1 note

up
10
liv_romania at yahoo dot com
2 years ago
In order to understand better how APC caching works you can do the following:

1. Restart web server (Apache or Nginx)

2. Create file "apc_fetch.php":
<?php
var_dump
(apc_fetch(array(
   
'CUR_DATE_5s_1',
   
'CUR_DATE_5s_2',
   
'CUR_DATE_5s_3',
   
'CUR_DATE_0s_1',
   
'CUR_DATE_0s_2',
   
'CUR_DATE_0s_3',
)));
?>

3. Create file "apc_add.php":
<?php
$ttl
= 5;

$key = 'CUR_DATE_5s_1';
$var = date('c');
$result = apc_add($key, $var, $ttl);
var_dump($result);
echo
"\n";

$var = date('c');
$result = apc_add($key, $var, $ttl);
var_dump($result);
echo
"\n";

$key = 'CUR_DATE_0s_1';
$var = date('c');
$result = apc_add($key, $var);
var_dump($result);
echo
"\n";

$values = array(
   
'CUR_DATE_5s_2' => date('c'),
   
'CUR_DATE_5s_3' => rand(),
);
$result = apc_add($values, null, $ttl);
var_dump($result);
echo
"\n";

$values = array(
   
'CUR_DATE_0s_2' => date('c'),
   
'CUR_DATE_0s_3' => rand(),
);
$result = apc_add($values, null);
var_dump($result);
?>

4. Run "apc_fetch.php" and "apc_add.php" several times in order to see the persistent result and how values change from one request to another.
To Top