Displaying items by tag: php

Tuesday, 03 December 2019 07:31

WebEA hosted in a loadbalanced scenario

PHP has a very powerful session handling mechanism. By default it uses files, but you can use MemCache, MemCached or Redis, too and in some cases SQLite could be an option. These scenarios are provided with simple configuration settings. But if you have a Windows infrastructure then some of these "sounds-easy" scenarios do not really work. MemCache, MemChached are out-dated, Redis is not really available for Windows and the port from Microsoft is depricated. SQLite does not provide Row-Level-Locking mechanism that is required for a transaction intensive way of session handling.

So I thought it is clever to use an existing MS SQL Server that was already used for EA repositories.

You can find a lot of resources explaining how to write your own session handler, but none explaining the combination of SQL Server and what to configure without the need to adapt the code (meaning WebEA).

What is required:

MS SQL Server for PHP

installed as an extension please take care to use the fitting version to the PHP version

PHP.ini

This setting defines, that a user specific session handler should be used:

session.save_handler = user

This adds automatically the session handling to every php file interpreted:

auto_prepend_file = "[path]SSCESessionHandler.php"

SSCESessionHandler.php

Then you need a class that implements the SessionHandlerInterface:

class SparxCEFileSessionHandler implements SessionHandlerInterface

that means the following methods:

public function open($savePath, $sessionName)

--> here you open the connection to the database

public function close()

--> here you close the connection to the database

public function read($id)

--> here you read the session data

public function write($id, $data)

--> here you write the session data

public function destroy($id)

--> here you remove the entry of the session

public function gc($maxlifetime)

--> from time to time garbage collection takes place - a good place to remove out dated sessions

And at the bottom of this file - you should instanticate and start the Session Handler - because this will become the top most part of any php in the future of this installation

$handler = new SSCESessionHandler();
session_set_save_handler($handler, true);
session_start();

 

 

Published in Tutorials
Tagged under