Aerospike PHP Session Serializer igbinary

Используя Aerospike в качестве бэкэнда для сессий PHP, я бы хотел изменить сериализатор по умолчанию с «php» на «igbinary».

Вот мой стек:

  • Linux Debian Jessie 8.4
  • PHP 5.6.20
  • Aerospike Community Server v3.8.2.3
  • PHP клиентская библиотека v3.4.8
  • igbinary v1.2.1

Вот простой пример PHP-скрипта для тестирования:

<?php

ini_set('display_errors', 'on');
ini_set('error_reporting', E_ALL);
ini_set('session.save_handler','aerospike');
ini_set('session.save_path','sessions|sess|127.0.0.1:3000');

// Start session
session_start();

// Write session
$_SESSION['test'] = time();

// Read session
$db = new Aerospike(["hosts" => [[ "addr" => "127.0.0.1", "port" => 3000 ]]]);
$key = $db->initKey('sessions', 'sess', session_id());
$status = $db->get($key, $record);

echo htmlentities($record['bins']['PHP_SESSION']);

Это работает как ожидалось. Вот вывод:

test|i:1464615088;

Если я изменю сериализатор сеанса с WDDX например, это все еще работает:

<?php

[...]

ini_set('session.save_handler','aerospike');
ini_set('session.save_path','sessions|sess|127.0.0.1:3000');
ini_set('session.serialize_handler', 'wddx');

[...]

Вот вывод:

<wddxPacket version='1.0'><header/><data><struct><var name='test'><number>1464615227</number></var></struct></data></wddxPacket>

Но когда я меняю сериализатор с igbinary, как это:

<?php

[...]

ini_set('session.save_handler','aerospike');
ini_set('session.save_path','sessions|sess|127.0.0.1:3000');
ini_set('session.serialize_handler', 'igbinary');

значение сеанса не сохраняется (строка не найдена в аэроспайке). Вот вывод:

Notice: Undefined index: bins in /var/www/test.php on line 42

Обратите внимание, что igbinary, кажется, хорошо работает со стандартным бэкэндом сессии PHP (файлы)

#ini_set('session.save_handler','aerospike');
#ini_set('session.save_path','sessions|sess|127.0.0.1:3000');
ini_set('session.serialize_handler', 'igbinary');

[...]

echo $_SESSION['test'];
$_SESSION['test'] = time();

Это выдает «1464615840» или около того (после обновления), как и ожидалось.

Мне не хватает какой-либо опции конфигурации, чтобы использовать igbinary в качестве сериализатора для сеансов Aerospike?

Кто-нибудь уже с успехом использовал igbinary в качестве сериализатора для Aerospike?

1

Решение

Там открыт тянуть запрос это исправит это, вероятно, появится в следующем выпуске, совместимом с PHP7.

1

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

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

По вопросам рекламы [email protected]