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
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.
Ruby 1.9.2
Gestern ist Ruby 1.9.2 veröffentlicht worden. Ruby 1.9.2 ist zumeist kompatibel mit dem Vorgänger 1.9.1 und wird daher bei einer Installation unter Linux auch in das gleiche Verzeichnis installiert.
Die neue Version löst mit einer Neu-Implementierung der Time Klasse das Jahr 2038 Problem und erweitert die Socket API um bessere IPv6-Unterstützung zu bieten.
Die neue Klasse "Random" generiert Pseudozufallszahlen und unterstützt unterschiedliche Zufallszahlengeneratoren.
Installation
Wie immer kann der Quellcode von ruby-lang.org heruntergeladen werden:
http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.gz
http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.tar.bz2
http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p0.zip
Alternativ kann man auch RVM nutzen, welches bereits aktualisiert wurde um das neue Release zu unterstützen:
rvm update --head && rvm reload && rvm install 1.9.2 && rvm 1.9.2 --default
Offizieller Artikel: http://www.ruby-lang.org/en/news/2010/08/18/ruby-1-9-2-is-released/
Google Storage
Vor einiger Zeit schon hat Google seinen neuen Dienst "Google Storage" angekündigt. Damit will Google dem schon seit einigen Jahren existierenden Amazon Simple Storage Service (S3) und dem CDN Amazon Cloudfront konkurenz machen. Ich habe mich für einen Developer Account beworben und durfte die letzten Tage mit Google Storage rumspielen.
Das ganze läuft wie für Google typisch zurzeit noch als Beta und sämtliche Aktionen mit dem Developer Account laufen in einer Sandbox ab. Google hat ganze Arbeit geleistet und alles gut Dokumentiert sowie mehrere Tools zur Verfügung gestellt um mit dem Service arbeiten zu können.
Piwik Open Source Webanalytik
Seit knapp einem Jahr nutze ich nun Piwik um die Besuche auf meinen Seiten zu tracken und bin mit der Performance sowie Stabilität von Piwik sehr zufrieden. Zurzeit arbeite ich an einem eigenen Plugin welches die von Google Analytics bekannten "Alerts" implementieren wird. In diesem Post möchte ich zunächst durch die Installation führen und dann einige Worte zur Optimierung der Software verlieren.
Installation
Die Installation von Piwik ist zumeist recht selbst erklärend. Piwik benötigt zur Installation eine MySQL-Datenbank (Version >= 4.1), PHP 5.1.3 sowie pdo und pdo_mysql (welches bei PHP 5.x normalerweise dabei ist). Weiterhin wird empfohlen die GD-Library für PHP installiert und aktiviert zu haben, da diese für die von Piwik erzeugten "Sparklines" genutzt wird. Um Piwik Installieren zu können muss entweder ein FTP-Zugang zum Webspace oder Shell-Zugriff möglich sein.












