We have two servers with Memcached on both of them.
First one is so called memcachedSetter
and second is memcachedGetter
.
Server memcachedSetter
create uniq keys
via php createUID
function and extended searching parameters as value (we get searching flights parameters and bypass is on provider`s SOAP Server)
public function createUID() {
return md5(uniqid(rand(),1));
}
The second way point is appear when user selecting one of returned flight variant to book it.
memcachedGetter
want to join selected flight variant with request requisites. That is example of Set and Get value memcachedGetterServer code example.
memcachedSetterSetAction:
public function memcachedSetterSetAction() {
$cacheConfig = new \Zend\Config\Config...;
$content = new \stdClass();
$content->content = 'Some search criteria';
$cache = \Zend\Cache\StorageFactory::factory(...);
$cache->setItem('taskA9E3..89', $content);
$cache->setItem('requestFC20..60', $content);
$cache->setItem('taskD987..76', $content);
$cache->setItem('request72D4..4A', $content);
die;
}
memcachedSetterGetAction:
public function memcachedSetterGetAction() {
echo "<br> 1. ";
$requestData = $cache->getItem('taskA9E3..89');
var_dump($requestData );
echo "<br> 2. ";
$requestData = $cache->getItem('requestFC20..60');
var_dump($requestData );
echo "<br> 3. ";
$requestData = $cache->getItem('taskD987..76');
var_dump($requestData );
echo "<br> 4. ";
$requestData = $cache->getItem('request72D4..4A');
var_dump($requestData );
}
This way we setting and getting both each of key/values. And then magic appears when we try to get value by key on th e second server:
memcachedGetterGetAction:
public function memcachedSetterGetAction() {
echo "<br> 1. ";
$requestData = $cache->getItem('taskA9E3..89');
var_dump($requestData );
echo "<br> 2. ";
$requestData = $cache->getItem('requestFC20..60');
var_dump($requestData );
echo "<br> 3. ";
$requestData = $cache->getItem('taskD987..76');
var_dump($requestData );
echo "<br> 4. ";
$requestData = $cache->getItem('request72D4..4A');
var_dump($requestData );
}
The same code on the memcachedGetter will return just a part of values instant full set as memcachedSetter did:
1. object(stdClass)#331 (1) { ["content"]=> string(17) "Some sea..." }
2. object(stdClass)#332 (1) { ["content"]=> string(17) "Some sea..." }
3. object(stdClass)#336 (1) { ["content"]=> string(17) "Some sea..." }
4. object(stdClass)#339 (1) { ["content"]=> string(17) "Some sea..." }
vs
1. object(stdClass)#335 (1) { ["content"]=> string(17) "Some sea..." }
2. object(stdClass)#331 (1) { ["content"]=> string(17) "Some sea..." }
3. NULL
4. NULL