У нас есть два сервера с Memcached на обоих.
Первый так называемый memcachedSetter
и второй memcachedGetter
,
сервер memcachedSetter
Создайте uniq keys
через php createUID
функция и расширенный поиск параметров в качестве значения (мы получаем параметры поиска рейсов и обход на SOAP-сервере провайдера)
public function createUID() {
return md5(uniqid(rand(),1));
}
Вторая точка маршрута появляется, когда пользователь выбирает один из вариантов возвращаемого рейса, чтобы забронировать его.
memcachedGetter
хотите присоединиться к выбранному варианту полета с запросом реквизитов. Это пример значения Set и Get memcachedGetterServer Пример кода
memcachedSetterЗадаватьДействие:
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;
}
memcachedSetterПолучитьДействие:
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 );
}
Таким образом, мы устанавливаем и получаем оба ключа / значения. И тогда волшебство появляется, когда мы пытаемся получить значение по ключу на втором сервере:
memcachedGetterПолучитьДействие:
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 );
}
Тот же код на memcachedдобытчик вернет только часть значений мгновенного полного набора как memcachedСеттер сделал:
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..." }
против
1. object(stdClass)#335 (1) { ["content"]=> string(17) "Some sea..." }
2. object(stdClass)#331 (1) { ["content"]=> string(17) "Some sea..." }
3. NULL
4. NULL
Задача ещё не решена.
Других решений пока нет …