PHP で中間結果をローカルに保存する際に問題が発生しました。
とAPC
:</p>
apc_store("foo", "bar");
$ret = apc_fetch("foo");
とAPCu
:</p>
apcu_store("foo", "bar", 0);
$ret = apcu_fetch("foo");
PHPスクリプトのphp_cliの下にapc_store/apcu_storeで保存し、別のphpスクリプトでapc_fetch/apcu_fetchでフェッチすると、$ret
空であることがわかります。
一方、shmop
:
$shmKey = ftok(__FILE__, 't');
$shmId = shmop_open($shmKey, "c", 0644, 1024);
$dataArray = array("foo" => "bar");
shmop_write($shmId, serialize($dataArray), 0);
$retArray = unserialize(shmop_read($shmId, 0, shmop_size($shmId)));
$ret = $retArray['foo'];
ここで : を取得し$ret
ます"bar"
。
APC/APCu
と同じように、中間結果をローカルにキャッシュするべきではありませんshmop
か?