software1987 Tech-Blog

3Sep/100

MongoSession – Ein PHP Session-Handler mit MongoDB

MongoSession

MongoSession ist eine Implementierung eines MongoDB Session-Handlers für PHP. Diese Klasse wurde als drop-in Lösung entwickelt um von normalem Session-Handling einfach umstellen zu können. Die Klasse wurde ursprünglich von Corey Ballou entwickelt und im Blog vorgestellt. Als ich das Projek auf Github geforkt hatte stellte ich schnell fest, dass der Code ungetestet und nicht funktional war. Nach einigen Testläufen ist MongoSession nun aber einsatzbereit.

Benutzung

Die einfachste Möglichkeit MongoSession zu verwenden, ist der folgende Code:

<?php
require_once('MongoSession.php');
$session = new MongoSession();
?>

Der Konstruktor von MongoSession setzt einen neuen Session-Handler, startet die Session (session_start()) und stellt eine Verbindung zum MongoDB-Server auf localhost her.

require_once('MongoSession.php');

// Array zur Konfiguration von MongoSession
$config = array(
	// Gültigkeitsbereich des Cookies
        'cookie_path' => '/',
        'cookie_domain' => '.mydomain.com', // .mydomain.com

        // Session
        'lifetime' => 3600, // session lifetime in Sekunden
        'database' => 'session', // Name der MongoDB database
        'collection' => 'session', // Name der MongoDB collection
        'persistent' => false, // Persistente Verbindung?
        'persistent_name' => 'MongoSession, // Name der Verbindung

	// Array von MongoDB servern
        'servers' => array(
            	array(
	                'host' => Mongo::DEFAULT_HOST,
	                'port' => Mongo::DEFAULT_PORT,
	                'username' => null,
	                'password' => null,
        	)
        )
);

$session = new MongoSession($_config);

Der obige Code zeigt wie man MongoSession mit Hilfe eines Array umkonfigurieren kann. Im Vergleich zur ursprünglichen Implementierung ist hier die Möglichkeit hinzugekommen persistente Verbindungen zum Server aufzubauen. Diese muss allerdings mit einem global (auf dem Server) eindeutigem Namen versehen werden, da sie sonst von jedem auf dem gleichen Server wiederverwendet werden kann.

Download

Das Projekt wird auf Github gehostet. Jeder der die Klasse verwenden möchte kann sich die aktuellste Version direkt von Github herunterladen.

Alternativ kann das Projekt natürlich auch mit git geklont werden:

git clone git://github.com/halfdan/MongoSession.git
20Aug/101

PHP mit MongoDB

Als Google vor mehr als einem Jahr die Sprache "Go" (golang.org) einführte fehlte es in der Community an einer Möglichkeit Codeschnipsel mit Syntaxhighlighting online zu stellen. Ich machte mich also recht schnell daran einen nopaste/pastebin Klon zu entwickeln welcher neben den üblichen Sprachen auch "Go" unterstützt.

Da das ganze an sich keine sonderliche herausforderung darstellt (Datenbank anlegen + Code schreiben), wollte ich die Aufgabe dazu nutzen mich in etwas neues einzuarbeiten. Ich entschied mich dafür, nicht wie üblich PostgreSQL oder MySQL als Datenbank zu nutzen sondern eine NoSQL-Datenbank. Meine Wahl fiel auf "MongoDB", welche ich hier kurz vorstellen möchte.