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
Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
20Aug/100

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.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
19Aug/100

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/

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
19Jun/101

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.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)
14Jun/100

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.

Digg This
Reddit This
Stumble Now!
Buzz This
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Kick It on DotNetKicks.com
Shout it
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)