кеширование — PHP кеш apc / apcu не сохраняет промежуточный результат, а shmop — почему?

Я столкнулся с проблемой с PHP для локального хранения промежуточного результата.

С APC:

apc_store("foo", "bar");
$ret = apc_fetch("foo");

С APCu:

apcu_store("foo", "bar", 0);
$ret = apcu_fetch("foo");

Я сохраняю с помощью apc_store / apcu_store в php_cli для сценария php и извлекаю с помощью apc_fetch / apcu_fetch для другого сценария php и нахожу $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?

2

Решение

И то и другое APC а также APCu распределяйте память между теми же процессами, в которых они запущены, но вы не можете использовать их с разными процессами. Они предназначались для работы в многопроцессорных или многопоточных приложениях prefork (apache / php-fpm / etc).

CLI-версия APCu предназначена главным образом для помощи в тестировании, но если вы запустите код, используя CLI, а затем запустите другой экземпляр CLI — у вас не будет данных при первом запуске (то же самое произойдет, если вы перезапустите ваш веб-сервер).

К сожалению, эта информация не ясна в документации.

4

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector