Session merupakan salah satu fasilitas yang dimiliki oleh PHP yang memungkinkan seorang pengunjung situs mempunyai variabel yang akan terus ada selama dalam kunjungannya. Session biasanya dipakai pada aplikasi web dinamis, misalnya CMS, situs e-Commerce, forum dan portal.
Informasi session default-nya disimpan pada suatu file temporer di web server. File session dibuat ketika suatu session dimulai dan dihapus saat session tersebut berakhir. Semakin tinggi trafik situs, secara otomatis beban web server yang ditimbulkan oleh session tersebut juga makin besar.
Jika kita membangun aplikasi web untuk multi-server, penggunaan file session ini bisa menimbulkan masalah tersendiri. Kenapa demikian? Penyebabnya yaitu karena setiap web server mempunyai direktori sendiri untuk menyimpan file session. Apabila hanya memakai satu web server saja, tentu tidak akan terjadi masalah. Tetapi bagaimana jadinya jika kita menggunakan banyak server dengan sistem load balancing?
Katakanlah kita menggunakan 5 buah web server. Saat seorang pengunjung mengakses aplikasi web, web server yang melayani permintaan tersebut adalah web server 1. Jadi file session akan dibuat pada server 1 tersebut.
Nah, ketika ia mengakses halaman lainnya, masalah tersebut akan terjadi. Bisa jadi ia akan kehilangan session. Kenapa demikian? Karena ada kemungkinan permintaan yang kedua itu akan dilayani oleh server 2 atau lainnya, padahal kita tahu session dibuat pada server 1.
Ada beberapa solusi untuk mengatasi permasalahan tersebut. Pertama, dengan sistem file sharing. Dengan cara ini semua web server mengakses session yang tersimpan pada direktori yang telah di-share tersebut.
Alternatif lain yaitu menggunakan database untuk menyimpan informasi session, dan inilah yang akan saya bahas pada artikel ini. Dengan memakai database, session akan selalu tersedia, tak peduliĀ web server mana yang melayani permintaan user.
Selain itu kita bisa mengelola informasi session dengan lebih mudah. Misalnya saja kita bisa mengetahui dengan mudah berapa session yang masih aktif, user yang sedang login, dan sebagainya.
Fungsi session_set_save_handler() pada PHP memungkinkan kita untuk menyimpan session sesuai dengan yang kita inginkan termasuk menyimpannya pada database.
Langkah pertama yang perlu kita lakukan adalah membuat tabel sessions untuk menyimpan informasi session tersebut. Contohnya bisa Anda lihat pada cuplikan kode berikut ini.
CREATE TABLE sessions ( session_id varchar(100) NOT NULL default '', data text NOT NULL, expires int(11) NOT NULL default 0, PRIMARY KEY (session_id) );
(bersambung)

