MySQL Session-Handler für PHP

Normalerweise werden die Session-Daten von php dateibasiert auf der Festplatte abgelegt. In manchen Fällen -  z.B. falls man Loadbalancing einsetzen möchte - macht es jedoch Sinn, diese Daten in einer Datenbank wie z.B. MySQL abzulegen. Falls Sie eine aktuelle Debian- oder ubuntu-Distribution mit Apache verwenden, sind für die Umstellung nur wenige Schritte erforderlich:

Laden Sie folgende Datei herunter und kopieren Sie sie in das angegebene Verzeichnis:

Download: session_mysql.so [51kB]

cp session_mysql.so /usr/lib/php5/20060613+lfs/

Nun müssen wir noch eine MySQL-Tabelle anlegen, dies geschieht durch Ausführen des folgenden MySQL-Befehls:

create table phpsession(
   sess_key char(64) not null,
   sess_mtime int(10) unsigned not null,
   sess_host char(64) not null,
   sess_val mediumblob not null,
   index i_key(sess_key(6)),
   index i_mtime(sess_mtime),
   index i_host(sess_host)
 );


Anschließend öffnen Sie Ihre php.ini zum Bearbeiten:

vi /etc/php5/apache2/php.ini

Und fügen folgenden Inhalt hinzu:

extension=session_mysql.so
session.save_handler = "mysql"
session_mysql.db="host=127.0.0.1 db=DATABASE user=USER pass=PASSWORD
session_mysql.hostcheck="0"
session_mysql.hostcheck_removewww="1"
session_mysql.persistent="1"
session_mysql.gc_maxlifetime="1440"
session.gc_probability=1
session.gc_divisor=100

DATABASE, USER und PASSWORD müssen Sie dabei natürlich durch Ihre eigenen entsprechenden Werte ersetzen.

Nun müssen wir nur noch den Apache neu starten:

apache2ctl restart

Der Quellcode stammt von http://websupport.sk/~stanojr/projects/session_mysql/.

Alternative:

Falls Sie eine andere Distribution verwenden, können Sie sich die Source-Files von dieser Seite herunterladen und mit wenigen Befehlen selbst kompilieren:

Entpacken Sie zunächst das Archiv und wechseln Sie in das Verzeichnis mit den Source-Files.

Nun können wir kompilieren und installieren.

aptitude install php5-dev libmysqlclient15-dev
/usr/bin/phpize
./configure --enable-session-mysql --with-php-config=/usr/bin/php-config --with-mysql=/usr
make
make install

Danach sind die übrigen Schritte analog zu obiger Beschreibung auszuführen.