Я пытаюсь сохранить строку с одним приложением в memcached. А затем после перенаправления http, пытаясь получить эту информацию из другого приложения на том же сервере. Я могу сохранить, но поиск информации не работает.
Я убедился, что оба приложения не применяют префикс к ключу кэша. Я запустил 'memcached-tool localhost: 11211 dump | less 'на сервере memcache, чтобы гарантировать, что данные существуют, что он и делает. Я могу получить доступ к данным из того же приложения, которое сохраняет данные. Поэтому, если я сохраню данные из приложения Laravel, я смогу извлечь их из приложения laravel и наоборот для приложения phalcon.
Используемые переменные среды одинаковы в обоих приложениях.
Настройка в Laravel (cache.php):
'memcached' => [
'driver' => 'memcached',
'servers' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 0,
],
],
],
Как я экономлю в Laravel:
Cache::put($sha, $viewData, 60);
return redirect("someUrl/{$sha}", 302);
Настройка в Phalcon:
$di->setShared('memcached', function(){
// Cache data for one hour
$frontCache = new \Phalcon\Cache\Frontend\Data(
[
'lifetime' => 60,
'prefix' => ''
]
);
// Create the component that will cache 'Data' to a 'Memcached' backend
// Memcached connection settings
return new \Phalcon\Cache\Backend\Libmemcached(
$frontCache,
[
'prefix' => '',
'servers' => [
[
'host' => MEMCACHED_SERVER,
'port' => MEMCACHED_PORT,
'weight' => 0,
]
]
]
);
});
Как я пытаюсь получить информацию в Phalcon:
$cache = $this->di->getShared('memcached');
$info = $cache->get($cacheKey);
Вот вывод переменной $ cache из xdebug:
Phalcon\Cache\Backend\Libmemcached::__set_state(array(
'_frontend' =>
Phalcon\Cache\Frontend\Data::__set_state(array(
'_frontendOptions' =>
array (
'lifetime' => 60,
'prefix' => '',
),
)),
'_options' =>
array (
'prefix' => '',
'servers' =>
array (
0 =>
array (
'host' => 'servername',
'port' => port,
'weight' => 0,
),
),
'statsKey' => '',
),
'_prefix' => '',
'_lastKey' => '38404efbc4fb72ca9cd2963d1e811e95fe76960b',
'_lastLifetime' => NULL,
'_fresh' => false,
'_started' => false,
'_memcache' =>
Memcached::__set_state(array(
)),
))
А вот дамп из memcached-tool:
Dumping memcache contents
add 38404efbc4fb72ca9cd2963d1e811e95fe76960b 4 1562346522 144
a:5:{s:3:"zip";s:0:"";s:10:"first_name";s:5:"Clint";s:9:"last_name";s:9:"Broadhead";s:5:"phone";s:0:"";s:5:"email";s:20:"blah@blah.com";}
Я ожидал, что смогу сохранить в memcache из любого приложения, а затем извлечь этот кеш из любого другого места, имеющего доступ к тому же серверу. Но когда я пытаюсь получить в приложении phalcon, я получаю «ноль». Хотя я могу увидеть пару ключ / значение на сервере. Заранее благодарим за помощь.