PHP apc/apcu 缓存不保留中间结果,而 shmop 保留中间结果,为什么?
PHP apc/apcu cache do not keep intermediate result while shmop do, why?
我在 PHP 本地存储中间结果时遇到了问题。
与APC
:
apc_store("foo", "bar");
$ret = apc_fetch("foo");
和APCu
:
apcu_store("foo", "bar", 0);
$ret = apcu_fetch("foo");
我在 php 脚本中使用 apc_store/apcu_store 存储在 php_cli 下,并在另一个 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
一样在本地缓存中间结果吗?
我在 PHP 本地存储中间结果时遇到了问题。
与APC
:
apc_store("foo", "bar");
$ret = apc_fetch("foo");
和APCu
:
apcu_store("foo", "bar", 0);
$ret = apcu_fetch("foo");
我在 php 脚本中使用 apc_store/apcu_store 存储在 php_cli 下,并在另一个 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
一样在本地缓存中间结果吗?