Using Aerospike as a backend for PHP sessions, I would like to change default serializer from "php" to "igbinary".
Here is my stack :
Here is a simple sample PHP script for testing:
<?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']);
This works as expected. Here the output:
test|i:1464615088;
If I change session serializer with wddx for example, it still works:
<?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');
[...]
Here is the output:
<wddxPacket version='1.0'><header/><data><struct><var name='test'><number>1464615227</number></var></struct></data></wddxPacket>
But when I change serializer with igbinary, like this:
<?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');
session value is not saved (no row found in aerospike). Here is the output:
Notice: Undefined index: bins in /var/www/test.php on line 42
Notice that igbinary seems to work well with the default PHP session backend (files)
#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();
This outputs "1464615840" or so (after refresh), as expected.
Am I missing some configuration option in order to use igbinary as a serializer for Aerospike sessions?
Does anyone has already used igbinary as a serializer for Aerospike with success?
There's an open pull request that fixes it, likely to roll out with the upcoming PHP7 compatible release.