My Profile
Help
Hot Topics
Top Community Contributors
-
Tutorial: Domain Driven Database Design
Written by doug rosenberg -
Model Based Software Engineering: How fast can we go?
Written by doug rosenberg -
How to Validate your Enterprise Architect BPMN Models
Written by Jonathan Thöne -
RIC MDG Technology - Better Functional Requirements for Information System-based Solutions
Written by Dan Tasker -
How can I show messages between independent BPMN processes?
Written by DT_Sam -
Automatic creation of system model with Neo4j
Written by Bohumil Pospíšil -
How to Set the Default Language for a New Model Repository
Written by philchudley -
Prolaborate 3.4 released: custom properties, diagram editor, custom logs path, dashboard collaboration
Written by Guillaume
Displaying items by tag: loadbalanced
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();