Jumat, 22 Mei 2009

Simpan Symfony Session di Database dgn PDO

Sebuah session secara default ditaruh/disimpan di server dimana session tersebut dibuat, tapi kalau kita menginginkan sesion tersebut dikenali atau di baca di multi server seperi untuk keperluan load balancing server (punya banyak server) maka session tersebut dapat disimpan di database

Tujuan dari menyimpan session di database agar isi dari session tersebut bisa di kenali atau di baca oleh semua server.

Untuk melakukan itu symfony telah menyediakan feature untuk keperluan tersebut, gimana cara bikinnya nya, berikut ini caranya:


sebelumnya gw kasih tau dulu symfony yang gw pake adalah versi 1.2


1. Buat sebuah table dengan struktur tabel dibawah ini

CREATE TABLE IF NOT EXISTS `sessions` (
`id` varchar(64) NOT NULL,
`data` longtext NOT NULL,
`time` int(11) NOT NULL,
KEY `id` (`sess_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


2. Lakukan configurasi di database.yml, sebagai contoh

symfony/config/database.yml


3. berikan config database seperti ini, contoh di bawah menggunakan koneksi PDO

all:
pdo:
class: sfPDODatabase
param:
dsn: mysql:dbname=nama_database;host=127.0.0.1
username: username
password: password
encoding: utf8




3. bukan file factories.yml dari sebuah aplikasi, sebagai contoh

symfony/apps/aplikasi_a/config/factories.yml


4. tambah setting dibawah ini

storage:
class: sfPDOSessionStorage
param:
session_name: symfony
db_table: symfony_session
database: pdo
db_id_col: id
db_data_col: data
db_time_col: time


berikut penjelasannya:

class: sfPDOSessionStorage -> menggunakan class session PDO karena koneksi database yg digunakan adalah PDO
session_name: symfony -> nama session
db_table: -> nama tabel yg digunakan untuk menyimpan session
database: -> koneksi yang yang digunakan (contoh: mysqli, pdo)
db_id-col: -> nama kolom untuk menyimpan session id
db_data_col: -> nama kolom untuk menyimpan isi/value dari session
db_time_col: -> nama kolom untuk menyimpan waktu/time dibuat nya session tersebut


5. lakukan symfony clear cache

php symfony cc



4 komentar:

  1. nice posting gan :D

    BalasHapus
  2. mas boleh request ngak ??
    mas bikin login sendiri dari tabel user pakai symfony gimana caranya mas ??

    minta link tuto nya mas...
    terima kasih

    BalasHapus
  3. cara nya bikinnya bisa diliat di
    http://www.symfony-project.org/askeet/1_0/en/6

    BalasHapus
  4. mas kalo menggunkan session name yang sudah kita buat di action gimana

    contohnya seperti ini

    public function executeShow()
    $c=new Criteria();
    $c=add(MahasiswaPeer::EMAIL,???????)
    $mahasiswa=MahasiswaPeer::doSelectOne($c);

    }

    ??? tersebut adalah nama session email yang kan di ambil dari server.......

    terima kasih atas link nya mas
    saya dah coba yanda tanya tersebut sama ini $this->getUser->getEmail() tapi ngak bisa mas...
    mohon bantuannya ya

    $this->getUser->getEmail() ini sadah say deklarasikan di myUser nya....

    mohon bantuannnya mas

    BalasHapus